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

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

Solutions Collecting From Web of "Функция для подсчета числа цифр в строке"

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

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

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

сначала разделите строку , затем фильтруйте результат, чтобы включать только числовые символы, а затем просто подсчитывайте полученные элементы.

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

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

preg_based.php – это preg_match_all решение overv

 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 

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

Для PHP <5.4:

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

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

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