获取字符串内特定字符串的数量

时间:2013-04-23 03:13:21

标签: php

如果我有这样的字符串:

$string = '01122028K,02122028M,03122028K,04122028M,05122028K,06122028P-2,07122028K,08122028P-';

如何在字符串 $ string中获取'K'的数量。在这种情况下,K将为4。 我知道它可以通过帮助strpos()在将$ string分解为数组之后通过循环来解决。是否有任何PHP函数以直截了当的方式完成它?

谢谢。

2 个答案:

答案 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;

这不是一种“直截了当的方式”但我发现它非常有用,因为它非常灵活,您可以操作字符串上的所有类型的代码。

祝你好运!