Page 1 sur 1

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

Posté : 11 juil. 2024, 10:40
par Herve_be
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.

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

Posté : 11 juil. 2024, 11:54
par Spols
$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;

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

Posté : 11 juil. 2024, 12:05
par Herve_be
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

Posté : 11 juil. 2024, 12:20
par Spols
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

Posté : 11 juil. 2024, 15:11
par @rthur
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/