Функция подсчета количества цифр в строке
Я искал быструю функцию PHP, которая, учитывая строку, подсчитывала бы количество числовых символов (т. е. цифр) в этой строке. Я не мог найти его, есть ли функция для этого?
4 ответов
Это можно легко сделать с помощью регулярного выражения.
function countDigits( $str )
{
return preg_match_all( "/[0-9]/", $str );
}
функция вернет количество раз, когда шаблон был найден, что в данном случае является любой цифрой.
первый разделить строку, далее фильтр результат включить только числовое chars, а затем просто графа в результате этого элементы.
<?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
регулярное выражение явно превосходит. :)
эта функция проходит через заданную строку и проверяет каждый символ, чтобы увидеть, если он числовой. Если это так, он увеличивает количество цифр, а затем возвращает его в конце.
function countDigits($str) {
$noDigits=0;
for ($i=0;$i<strlen($str);$i++) {
if (is_numeric($str{$i})) $noDigits++;
}
return $noDigits;
}