Function to count number of digits in string

2019-02-04 09:07发布

I was looking for a quick PHP function that, given a string, would count the number of numerical characters (i.e. digits) in that string. I couldn't find one, is there a function to do this?

4条回答
孤傲高冷的网名
2楼-- · 2019-02-04 09:11

This can easily be accomplished with a regular expression.

function countDigits( $str )
{
    return preg_match_all( "/[0-9]/", $str );
}

The function will return the amount of times the pattern was found, which in this case is any digit.

查看更多
聊天终结者
3楼-- · 2019-02-04 09:15

first split your string, next filter the result to only include numeric chars and then simply count the resulting elements.

<?php 

$text="12aap33";
print count(array_filter(str_split($text),'is_numeric'));

edit: added a benchmark out of curiosity: (loop of 1000000 of above string and routines)

preg_based.php is overv's preg_match_all solution

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

the regular expression is clearly superior. :)

查看更多
爷、活的狠高调
4楼-- · 2019-02-04 09:15

This function goes through the given string and checks each character to see if it is numeric. If it is, it increments the number of digits, then returns it at the end.

function countDigits($str) {
    $noDigits=0;
    for ($i=0;$i<strlen($str);$i++) {
        if (is_numeric($str{$i})) $noDigits++;
    }
    return $noDigits;
}
查看更多
神经病院院长
5楼-- · 2019-02-04 09:29

For PHP < 5.4:

function countDigits( $str )
{
    return count(preg_grep('~^[0-9]$~', str_split($str)));
}
查看更多
登录 后发表回答