私は簡単なPHP関数を探していました。この関数は、文字列が与えられると、その文字列の数字(つまり数字)の数を数えます。1つは見つかりませんでした。これを行う?
これは正規表現で簡単に実現できます。
function countDigits( $str )
{
return preg_match_all( "/[0-9]/", $str );
}
この関数は、パターンが見つかった回数を返します。この場合は任意の数字です。
最初に 文字列を分割 、次に filter 結果を 数値のみを含める 文字に、次に単純に count 結果の要素。
<?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
正規表現は明らかに優れています。 :)
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;
}