3 回答

TA贡献1853条经验 获得超18个赞
删除捕获组,
preg_match_all("/[0-9]+/", trim($s), $matches);
匹配数组中的第一个元素是正则表达式的完全匹配,第二个是捕获组。

TA贡献1865条经验 获得超7个赞
preg_split()是这项工作的理想工具,因为它将返回一个扁平的索引数字数组。
用于\D+在出现一次或多次非数字字符时分解。使用函数标志确保输出数组中没有空元素——这消除了提前修剪的需要。
代码:(演示)
var_export(
preg_split(
'/\D+/',
$s,
0,
PREG_SPLIT_NO_EMPTY
)
);

TA贡献1836条经验 获得超5个赞
您可以选择删除所有非数字字符并获取strlen()
echo strlen(preg_replace('/[^0-9]/', '', '1 ssdsdsd 2')); // 2 digits
echo strlen(preg_replace('/[^0-9]/', '', '1 ssd324sd567s.d6756 2')); // 12 digits
echo strlen(preg_replace('/[^0-9]/', '', '123456789')); // 9 digits
如果你知道 PHP 字符串可以通过它们的索引位置访问,那么你可以使用类似的东西:
echo preg_replace('/[^0-9]/', '', '9 ssdsdsd 5')[0]; // outputs 9 because the resulting string is '95' and position zero's value is 9
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报