如何计算比赛次数?

时间:2016-03-15 11:02:01

标签: php regex

我有一个这样的字符串:

$str = 'this is a string';

这是我的模式:/i/g。有三次出现(正如您在上面的字符串中看到的那样,它包含三个i。现在我需要算一下。我怎么能得到那个号码?

3 个答案:

答案 0 :(得分:3)

您可以使用substr_count()以及preg_match_all()

echo substr_count("this is a string", "i"); // will echo 3
echo $k_count = preg_match_all('/i/i', 'this is a string', $out);  // will echo 3

将其他方法转换为数组,然后对其进行计数:

$arr = str_split('this is a string');
$counts = array_count_values($arr);

print_r($counts);

<强>输出:

Array
(
    [t] => 2
    [h] => 1
    [i] => 3
    [s] => 3
    [ ] => 3
    [a] => 1
    [r] => 1
    [n] => 1
    [g] => 1
)

答案 1 :(得分:2)

您应该使用substr_count()

$str = 'this is a string';
echo substr_count($str, "i"); // 3

您也可以使用mb_substr_count()

$str = 'this is a string';
echo mb_substr_count($str, "i"); // 3

substr_count - 计算子字符串出现次数

mb_substr_count - 计算子字符串出现次数

答案 2 :(得分:1)

preg_match_all可能更适合。

以下是一个例子:

<?php
$subject = "a test string a";
$pattern = '/a/i';
preg_match_all($pattern, $subject, $matches);
print_r($matches);
?>

打印:

Array ( [0] => Array ( [0] => a [1] => a ) )