我正在寻找一个快速的PHP函数,给定一个字符串,它将计算该字符串中的数字字符(即数字)的数量。我找不到一个,有没有这样做的功能?
答案 0 :(得分:52)
这可以通过正则表达式轻松完成。
function countDigits( $str )
{
return preg_match_all( "/[0-9]/", $str );
}
该函数将返回找到模式的次数,在本例中为任何数字。
答案 1 :(得分:8)
首先split your string,然后filter将结果发送到only include numeric个字符,然后只需count生成的元素。
<?php
$text="12aap33";
print count(array_filter(str_split($text),'is_numeric'));
编辑:添加了一个基准 出于好奇:(上述字符串和例程的1000000循环)
preg_based.php是overv的preg_match_all解决方案
harald@Midians_Gate:~$ time php filter_based.php
real 0m20.147s
user 0m15.545s
sys 0m3.956s
harald@Midians_Gate:~$ time php preg_based.php
real 0m9.832s
user 0m8.313s
sys 0m1.224s
正则表达明显优越。 :)
答案 2 :(得分:5)
对于PHP&lt; 5.4:
function countDigits( $str )
{
return count(preg_grep('~^[0-9]$~', str_split($str)));
}
答案 3 :(得分:0)
此函数遍历给定的字符串并检查每个字符以查看它是否为数字。如果是,则增加位数,然后在结尾处返回。
function countDigits($str) {
$noDigits=0;
for ($i=0;$i<strlen($str);$i++) {
if (is_numeric($str{$i})) $noDigits++;
}
return $noDigits;
}