2015-11-30 9 views
14

Каков наилучший способ для этого? Должен ли я использовать регулярное выражение или есть еще одна встроенная функция PHP, которую я могу использовать?PHP - удалить все нечисловые символы из строки

Например, я бы хотел: 12 months стать 12. Every 6 months стать 6, 1M стать 1 и т.д.

Спасибо

+0

Используйте регулярное выражение для этого. – aldrin27

+0

Возможный дубликат: http://stackoverflow.com/a/4949347/3647441 –

+0

нет необходимости в регулярном выражении, просто используйте 'trim' – Andrew

ответ

25

Вы можете использовать в этом случае preg_replace;

$res = preg_replace("/[^0-9,.]/", "", "Every 6 Months"); 

$ res return 6 в этом случае.

+0

Спасибо. Из интереса, можно ли взорвать строку с несколькими разделителями? Таким образом, в принципе разрешить 'explode()' работать как с запятой, так и с запятой, двоеточием и т. Д.? – b85411

+0

hm, посмотрите здесь: http://stackoverflow.com/questions/4955433/php-multiple-delimiters-in-explode – TechTreeDev

+5

Предоставленный ответ позволяет сохранить строки запятыми и периодами. В этом вопросе предлагается удалить все нечисловые символы. Это незначительное редактирование (не совсем подходящее для редактирования, так как оно всего 2 символа), но ответ на удаление всех не numeric должен быть '$ res = preg_replace ("/[^ 0-9]/"," "," Каждые 6 месяцев ");' – Jon

18

Используйте \D для соответствия несимметричным символам.

+0

Удаляет также периоды. Который может быть тем, что некоторые ищут. – Jake