PHP-код, щоб видалити все, крім цифр


135

Я намагаюся видалити все з рядка, але просто числа (0-9).

Я думав, що це спрацює ..

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

Але це лунає "604-619-5135". Що я пропускаю ???

Відповіді:


276

Спробуйте це:

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

preg_replace використовує PCRE, які зазвичай починаються та закінчуються a /.


Внутрішнє / подвійне цитування не має нічого спільного з PCRE tho. Мабуть (за минулі часи (?flags)) люди, які розробляли / писали функцію / API, вважали, що було б гарною ідеєю передавати прапори регулярних виразів із /flagsформою подвійного цитування, а не використовувати додатковий параметр функції.
Qtax

6
@Qtax: хороший момент, так, я знаю, що тут ми отримуємо слово "grep" від ("g / re / p")
Chris Eberle

109

Це для майбутніх розробників, ви також можете спробувати це. Простий теж

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

41
Привіт, я розробник з майбутнього. Це дійсно добре задовольнило наші потреби. Дякую.
zesda

6
Я від подальшого майбутнього, ніж Зесда і можу підтвердити, що це все-таки допомога
myshadowself

3
Я повернувся 2 у майбутнє і можу підтвердити, що досі не знайшов кращого шляху.
Eoin

4
Я останній розробник із самого далекого майбутнього. Мені сумно сказати, що це вже не корисно. Ви, хлопці, не повинні використовувати стільки пластикових соломки, повірте, ви побачите, коли потрапите сюди .... Якщо ви це зробите.
Джеремі

2
Просто FYI: ми в 39-му столітті досі цим користуємося.
користувач-44651


3

набагато більш практичний спосіб для тих, хто не хоче використовувати регулярний вираз:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

Примітка: вона працює і з номерами телефонів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.