php – Function to count number of digits in string-ThrowExceptions

Exception or error:

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?

How to solve:

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.

Answer:

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. 🙂

Answer:

For PHP < 5.4:

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

Answer:

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

Leave a Reply

Your email address will not be published. Required fields are marked *