我希望保留变量中的数字并删除所有字符。
例如:
input: +012-(34).56.(ASD)+:"{}|78*9
output: 0123456789
我希望保留变量中的数字并删除所有字符。
例如:
input: +012-(34).56.(ASD)+:"{}|78*9
output: 0123456789
这是一般的做法:
$numbers = preg_replace('/[^0-9]+/', '', '+012-(34).56.(ASD)+:"{}|78*9');
echo $numbers;
输出:
0123456789
返回字符串 $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引擎是否启用了UTF8和Unicode,将使用以下其中一种模式:
[^0-9]
- 如果禁用Unicode,则进行过滤。[^[:digit:]]
- 使用mbstring对该值进行过滤。[\p{^N}]
- 不使用mbstring对该值进行过滤。请参见http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Filter/Digits.php
filterStatic
首字母需大写。另外,您使用的是哪个版本的ZF?请注意,在1.9版本之前,Zend_Filter允许使用静态get()方法。随着1.9版本的发布,该方法已更名为filterStatic()以提高描述性。旧的get()方法已被标记为弃用。- http://framework.zend.com/manual/en/migration.19.html - Gordon
+
表示匹配一个或多个
。如果你只使用/[^0-9]/
,它不会匹配到你正在处理的字符串中可能出现的所有实例。 - Sarfraz