我想知道是否有一组函数或一个直接函数可以计算字符串中出现的数字,而不使用长str_split
并检查循环中的每个字符。
来自如下字符串:
fdsji2092mds1039m
它返回内部有8
个数字。
答案 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
会返回3
,1m3j7
也是如此。
答案 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