PHP / Zend: как удалить все символы из строки и сохранить только числа - PullRequest
4 голосов
/ 14 апреля 2010

Я хочу сохранить только цифры и удалить все символы из переменной.

Например:

input: +012-(34).56.(ASD)+:"{}|78*9
output: 0123456789

Ответы [ 2 ]

11 голосов
/ 14 апреля 2010

Вот как это сделать в общем:

$numbers = preg_replace('/[^0-9]+/', '', '+012-(34).56.(ASD)+:"{}|78*9');
echo $numbers;

Выход:

0123456789
6 голосов
/ 14 апреля 2010

С Zend_Filter_Digits

Возвращает строку $ value, удаляя все, кроме цифровых символов.

Пример со статическим вызовом через Zend_Filter:

echo Zend_Filter::filterStatic('abc-123-def-456', 'Digits'); // 123456

Пример с экземпляром Digits

$digits = new Zend_Filter_Digits;
echo $digits->filter('abc-123-def-456'); // 123456;

Внутренне фильтр будет использовать preg_replace для обработки входной строки. В зависимости от того, скомпилирован ли Regex Engine с включенным UTF8 и Unicode, будет использоваться один из следующих шаблонов:

  • [^0-9] - Фильтр, если Юникод отключен
  • [^[:digit:]] - Фильтр для значения с помощью mbstring
  • [\p{^N}] - Фильтр для значения без mbstring

См. http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Filter/Digits.php

...