Código PHP para eliminar todo menos números


135

Estoy tratando de eliminar todo de una cadena pero solo números (0-9).

Pensé que esto funcionaría ...

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

Pero echos "604-619-5135". ¿¿¿Qué me estoy perdiendo???

Respuestas:


277

Prueba esto:

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

preg_replace utiliza PCRE que generalmente comienzan y terminan con a /.


La cita interna / doble no tiene nada que ver con PCRE aunque. Aparentemente (en los días anteriores (?flags)) las personas que diseñaron / escribieron la función / API pensaron que era una buena idea pasar las banderas de expresiones regulares con la forma de doble comilla en /flagslugar de usar un parámetro de función adicional.
Qtax

66
@Qtax: buen punto, sí, sé que de ahí es de donde sacamos la palabra "grep" ("g / re / p")
Chris Eberle

109

Esto es para futuros desarrolladores, también puedes probar esto. Simple también

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

41
Hola, soy un desarrollador del futuro. De hecho, esto ha servido bien a nuestras necesidades. Gracias.
zesda

66
Soy de más lejos en el futuro que Zesda y puedo confirmarlo, todavía es una ayuda
myshadowself

3
Regresé 2 en el futuro y puedo confirmar que todavía no han encontrado una mejor manera.
Eoin

44
Soy el último desarrollador del futuro más lejano. Me entristece decir que esto ya no sirve de nada. Ustedes no deberían haber usado tantas pajitas de plástico, créanme que verán cuando lleguen aquí ... Si lo logran.
Jeremy

2
Solo para tu información: nosotros en el siglo 39 todavía usamos esto.
usuario-44651


3

Una forma mucho más práctica para aquellos que no quieren usar expresiones regulares:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

nota: también funciona con números de teléfono.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.