PHP / Zend:如何从字符串中删除所有字符并仅保留数字

时间:2010-04-14 08:03:56

标签: php zend-framework pattern-matching

我想只保留数字并从变量中删除所有字符。

例如:

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

2 个答案:

答案 0 :(得分:11)

这是如何做到这一点:

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

<强>输出:

0123456789

答案 1 :(得分:6)

Zend_Filter_Digits

  

返回字符串$ value,删除除数字字符以外的所有字符。

通过Zend_Filter进行静态调用的示例:

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

数字实例的示例

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

在内部,过滤器将使用preg_replace来处理输入字符串。根据是否使用UTF8和Unicode编译正则表达式引擎,将使用以下模式之一:

  • [^0-9] - 如果禁用Unicode则过滤
  • [^[:digit:]] - 使用mbstring
  • 过滤值
  • [\p{^N}] - 过滤没有mbstring的值

请参阅http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Filter/Digits.php