Codice PHP per rimuovere tutto tranne i numeri


135

Sto cercando di rimuovere tutto da una stringa ma solo numeri (0-9).

Ho pensato che avrebbe funzionato ..

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

Ma echo "604-619-5135". Cosa mi sto perdendo ???

Risposte:


277

Prova questo:

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

preg_replace usa PCRE che generalmente iniziano e finiscono con a /.


La citazione interna / doppia non ha nulla a che fare con PCRE. Apparentemente (nei giorni precedenti (?flags)) le persone che hanno progettato / scritto la funzione / API hanno pensato che fosse una buona idea passare i flag regex con la /flagsforma a doppia virgoletta invece di usare un parametro di funzione extra.
Qtax

6
@Qtax: buon punto, sì, so che è da lì che otteniamo la parola "grep" da ("g / re / p")
Chris Eberle,

109

Questo è per i futuri sviluppatori, puoi anche provare questo. Anche semplice

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

41
Ciao, sono uno sviluppatore dal futuro. Questo ha sicuramente servito bene le nostre esigenze. Grazie.
Zesda,

6
Vengo più lontano da Zesda in futuro e posso confermare, è ancora un aiuto
myshadowself

3
Sono tornato 2 in futuro e posso confermare che non hanno ancora trovato un modo migliore.
Eoin,

4
Sono l'ultimo sviluppatore dal futuro più lontano. Sono triste a dire che questo non serve più a niente. Non avreste dovuto usare così tante cannucce di plastica, credetemi vedrete quando arrivate qui ... Se ce la fate.
Jeremy,

2
Cordiali saluti: nel 39 ° secolo usiamo ancora questo.
user-44651


3

un modo molto più pratico per coloro che non vogliono usare regex:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

nota: funziona anche con i numeri di telefono.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.