Подтвердить что ты не робот

Функция для подсчета числа цифр в строке

Я искал быструю функцию PHP, которая, учитывая строку, подсчитывала количество числовых символов (например, цифр) в этой строке. Я не мог найти его, есть ли функция для этого?

4b9b3361

Ответ 1

Это можно легко выполнить с помощью регулярного выражения.

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

Функция вернет количество раз, когда шаблон был найден, что в этом случае является любой цифрой.

Ответ 2

сначала разделите строку, затем filter результат включают только числовые, а затем просто count результирующие элементы.

<?php 

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

edit: добавлен эталон из любопытства: (цикл из 1000000 выше строки и подпрограмм)

preg_based.php является overv preg_match_all решением

[email protected]_Gate:~$ time php filter_based.php 

real    0m20.147s
user    0m15.545s
sys     0m3.956s

[email protected]_Gate:~$ time php preg_based.php 

real    0m9.832s
user    0m8.313s
sys     0m1.224s

регулярное выражение явно превосходит.:)

Ответ 3

Для PHP < 5,4:

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

Ответ 4

Эта функция проходит через заданную строку и проверяет каждый символ, чтобы увидеть, является ли он числовым. Если это так, он увеличивает количество цифр, а затем возвращает их в конце.

function countDigits($str) {
    $noDigits=0;
    for ($i=0;$i<strlen($str);$i++) {
        if (is_numeric($str{$i})) $noDigits++;
    }
    return $noDigits;
}