Code PHP pour supprimer tout sauf les nombres


135

J'essaye de tout supprimer d'une chaîne mais juste des nombres (0-9).

Je pensais que cela fonctionnerait.

echo preg_replace("[^0-9]","",'604-619-5135');

Mais il fait écho à "604-619-5135". Qu'est-ce que je rate???

Réponses:


277

Essaye ça:

preg_replace('/[^0-9]/', '', '604-619-5135');

preg_replace utilise des PCRE qui commencent et se terminent généralement par un /.


Les guillemets intérieurs / doubles n'ont rien à voir avec PCRE tho. Apparemment (dans les jours précédents (?flags)) les personnes qui ont conçu / écrit la fonction / l'API ont pensé que c'était une bonne idée de passer les drapeaux de regex avec la /flagsforme entre guillemets au lieu d'utiliser un paramètre de fonction supplémentaire.
Qtax

6
@Qtax: bon point, ouais je sais que c'est de là que vient le mot "grep" ("g / re / p")
Chris Eberle

109

Ceci est pour les futurs développeurs, vous pouvez également essayer ceci. Simple aussi

echo preg_replace('/\D/', '', '604-619-5135');

41
Bonjour, je suis un développeur du futur. Cela a en effet bien répondu à nos besoins. Je vous remercie.
zesda

6
Je viens de plus loin dans le futur que Zesda et je peux le confirmer, c'est toujours une aide
myshadowself

3
Je suis revenu dans le futur et je peux confirmer qu'ils n'ont toujours pas trouvé de meilleur moyen.
Eoin

4
Je suis le tout dernier développeur d'un futur lointain. Je suis triste de dire que cela ne sert plus à rien. Vous n'auriez pas dû utiliser autant de pailles en plastique, croyez-moi, vous verrez quand vous arriverez ici ... Si vous réussissez.
Jeremy

2
Juste pour info: au 39ème siècle, nous l'utilisons encore.
user-44651 le


3

un moyen beaucoup plus pratique pour ceux qui ne veulent pas utiliser regex:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

remarque: cela fonctionne également avec les numéros de téléphone.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.