Supprimer caractères non numériques sauf séparateur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Supprimer caractères non numériques sauf séparateur

Re: Supprimer caractères non numériques sauf séparateur

par @rthur » 11 juil. 2024, 15:11

Merci, je ne savais pas comment inclure le séparateur ":" dans preg_replace.
En fait je ne comprends pas le signe "^" dans le masque.
A noter qu'il existe des outils comme les 2 suivants qui permettent de décrypter les regex en expliquant leur fonctionnement :
https://regexr.com/
https://regex101.com/

Re: Supprimer caractères non numériques sauf séparateur

par Spols » 11 juil. 2024, 12:20

le signe ^ indique "tout sauf" donc l'expression remplace tout sauf les chiffres, le séparateur et les retour à la ligne par "rien"

tu te retrouve donc qu'avec des chiffres et le séparateur en gardant les saut de ligne

Re: Supprimer caractères non numériques sauf séparateur

par Herve_be » 11 juil. 2024, 12:05

Merci, je ne savais pas comment inclure le séparateur ":" dans preg_replace.
En fait je ne comprends pas le signe "^" dans le masque.

Re: Supprimer caractères non numériques sauf séparateur

par Spols » 11 juil. 2024, 11:54

$re = '/[^0-9:\r\n]*/m';
$str = '270:90:60
81cm:36cm:50cm
60L:30l:30h';
$subst = "";

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;

Supprimer caractères non numériques sauf séparateur

par Herve_be » 11 juil. 2024, 10:40

Bonjour,
Une zone contient des valeurs numériques séparées par le caractère ":" et aussi d'autres caractères non numériques indésirables.
Comment ne garder que le numérique et les séparateurs ?
Exemples :
270:90:60 = cas normal, rien ne doit être modifié
81cm:36cm:50cm ⇒ 81:36:50
60L:30l:30h ⇒ 60:30:30
Au besoin je pourrais remplacer le séparateur ":" que j'ai choisi par tout autre caractère.
Merci d'avance pour votre aide.