2011-07-07 17 views

risposta

196

Prova questo:

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

preg_replace utilizza PCREs che generalmente iniziano e terminano con un /.

+0

La citazione interna/doppia non ha nulla a che fare con PCRE tho. Apparentemente (nei giorni precedenti a '(? Flags)') le persone che progettavano/scrivevano la funzione/API pensavano che fosse una buona idea passare i regex flags con il form double/'flags 'invece di usare un parametro di funzione extra . – Qtax

+5

@Qtax: buon punto, sì so che è dove otteniamo la parola "grep" da ("g/re/p") –

9

È necessario racchiudere il motivo in un delimitatore: in genere viene utilizzata una barra (/). Prova questo:

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

[Un delimitatore può essere qualsiasi carattere non alfanumerico, non backslash, non di spazio bianco.] (http://php.net/manual/en/regexp.reference.delimiters.php) La dose –

83

Questo è per gli sviluppatori futuri, si può anche provare questo. Semplice anche

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

non funziona se il numero ha + in start – mi3afzal

+5

Ciao, sono uno sviluppatore del futuro. Questo ha davvero soddisfatto i nostri bisogni. Grazie. – zesda

Problemi correlati