Function to count number of digits in string

前端 未结 4 2215
梦毁少年i
梦毁少年i 2020-12-15 04:15

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 fu

相关标签:
4条回答
  • 2020-12-15 04:53

    For PHP < 5.4:

    function countDigits( $str )
    {
        return count(preg_grep('~^[0-9]$~', str_split($str)));
    }
    
    0 讨论(0)
  • 2020-12-15 04:58

    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.

    0 讨论(0)
  • 2020-12-15 05:04

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

    0 讨论(0)
  • 2020-12-15 05:09

    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;
    }
    
    0 讨论(0)
提交回复
热议问题