Function to count number of digits in string

和自甴很熟 提交于 2019-11-29 05:28:27

问题


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?


回答1:


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.




回答2:


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. :)




回答3:


For PHP < 5.4:

function countDigits( $str )
{
    return count(preg_grep('~^[0-9]$~', str_split($str)));
}



回答4:


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;
}


来源:https://stackoverflow.com/questions/11023753/function-to-count-number-of-digits-in-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!