2011-07-07 21 views

Respuesta

196

Prueba esto:

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

preg_replace utiliza PCREs que generalmente empiezan y terminan con un /.

+0

La cita interna/doble no tiene nada que ver con PCRE tho. Aparentemente (en los días previos a '(? Flags)') las personas que diseñaron/escribieron la función/API pensaron que era una buena idea pasar los indicadores de expresiones regulares con el formato '/ flags' citado en lugar de usar un parámetro de función adicional . – Qtax

+5

@Qtax: buen punto, sí, sé de dónde sacamos la palabra "grep" de ("g/re/p") –

9

Debería encerrar el patrón en un delimitador; normalmente se usa una barra inclinada (/). Prueba esto:

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

[Un delimitador puede ser cualquier carácter no alfanumérico, no de barra invertida, no de espacio en blanco.] (http://php.net/manual/en/regexp.reference.delimiters.php) –

83

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

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

dosis no funciona si el número tiene + en el inicio – mi3afzal

+5

Hola, soy un desarrollador del futuro. Esto de hecho ha servido a nuestras necesidades. Gracias. – zesda

Cuestiones relacionadas