计算字符串中出现的数字数量

时间:2017-03-29 11:50:44

标签: php

我想知道是否有一组函数或一个直接函数可以计算字符串中出现的数字,而不使用长str_split并检查循环中的每个字符。

来自如下字符串:

fdsji2092mds1039m

它返回内部有8个数字。

4 个答案:

答案 0 :(得分:2)

您可以将filter_var()FILTER_SANITIZE_NUMBER_INT常量一起使用,然后检查新字符串的长度。新字符串将仅包含该字符串中的数字,并且所有其他字符都将被过滤掉。

$string = "j3987snmj3j";
$numbers = filter_var($string , FILTER_SANITIZE_NUMBER_INT);
$length = strlen($numbers); // 5
echo "There are ".$length." numbers in that string";

请注意,每个号码都会单独计算,因此137会返回31m3j7也是如此。

Live demo

答案 1 :(得分:1)

其他解决方案:

function countNumbers(string $string) {
    return preg_match_all('/\d/', $string, $m);
}

您可以使用正则表达式

答案 2 :(得分:0)

试试这样:

$myString = 'Som3 Charak1ers ar3 N0mberZ h3re ;)';
$countNumbers = strlen((string)filter_var($myString, FILTER_SANITIZE_NUMBER_INT));
echo 'Your input haz ' . $countNumbers . ' digits in it, man';

如果需要,您也可以使用此功能仅返回数字。

答案 3 :(得分:0)

以下代码执行您要执行的操作:

<?php
$string = 'dsfds98fsdfsdf8sdf908f9dsf809fsd809f8s15d0d';
$splits=str_split($string);
$count=0;
foreach ($splits as $split){
    if(is_numeric($split)){
        $count++;
    }
}

print_r($count);

输出:17