如果我有这样的字符串:
$string = '01122028K,02122028M,03122028K,04122028M,05122028K,06122028P-2,07122028K,08122028P-';
如何在字符串 $ string中获取'K'的数量。在这种情况下,K将为4。 我知道它可以通过帮助strpos()在将$ string分解为数组之后通过循环来解决。是否有任何PHP函数以直截了当的方式完成它?
谢谢。
答案 0 :(得分:6)
echo "There are " . substr_count($string, 'K') . " K's in the string";
如果您不想计算K-1
,可以这样:
echo "There are " . substr_count($string, 'K')-substr_count($string, 'K-') . " K's in the string";
要解决评论中的新问题:
$string = '01122028K,02122028M,02122028K-1,02122028K-2,03122028K,04122028M,05122028K-1,04122028M,05122028K,06122028P-2,07122028K,08122028P-';
preg_match_all('/K(?:-\d+)?/', $string, $match);
$counts = array_count_values($match[0]);
print_r($counts);
Array
(
[K] => 4
[K-1] => 2
[K-2] => 1
)
答案 1 :(得分:0)
尝试这个解决方案:
$string = '01122028K,02122028M,03122028K,04122028M,05122028K,06122028P-2,07122028K,08122028P-';
$strlen = strlen($string);
$count = 0;
for( $i = 0; $i <= $strlen; $i++ ) {
$char = substr( $string, $i, 1 );
// $char contains the current character, so do your processing here
if ($char == "K")
$count++:
}
...然后
echo $count;
这不是一种“直截了当的方式”但我发现它非常有用,因为它非常灵活,您可以操作字符串上的所有类型的代码。
祝你好运!