28

文字列を指定すると、その文字列の数字 (数字) の数をカウントする簡単な PHP 関数を探していました。見つけられなかったのですが、これを行う機能はありますか?

4

4 に答える 4

58

これは、正規表現を使用して簡単に実現できます。

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

この関数は、パターンが見つかった回数 (この場合は任意の数字) を返します。

于 2012-06-13T21:46:20.180 に答える
8

最初に文字列を分割し、次に結果をフィルタリングして数値文字のみを含め、結果の要素を単純に数えます。

<?php 

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

編集:好奇心からベンチマークを追加しました:(上記の文字列とルーチンの1000000のループ)

preg_based.php は overv の preg_match_all ソリューションです

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

正規表現は明らかに優れています。:)

于 2012-06-13T21:54:12.810 に答える
5

PHP < 5.4 の場合:

function countDigits( $str )
{
    return count(preg_grep('~^[0-9]$~', str_split($str)));
}
于 2012-06-13T22:12:52.147 に答える
0

この関数は、指定された文字列を調べ、各文字をチェックして数値かどうかを確認します。そうであれば、桁数を増やし、最後にそれを返します。

function countDigits($str) {
    $noDigits=0;
    for ($i=0;$i<strlen($str);$i++) {
        if (is_numeric($str{$i})) $noDigits++;
    }
    return $noDigits;
}
于 2012-06-13T21:44:10.163 に答える