我不确定这是否是您需要的?试试看。这段代码应该可以解决您的需要。从 'message' 中的 'bedwords' 列表中找到 'badwords',计算每个 'bedwords' 单词的出现次数,并为每个正面结果(甚至重复)在 '$ 罚分' 上加 1 个罚分。该代码忽略大写和小写字母。设置列表:
$badwords = ['world', 'car', 'cat', 'train',];
$message = "World is small. I love music and my car. But I also love to
travel by train. I like animals, especially my cat.";
我们将初始化用于计算罚分的变量。
$penalty = 0;
现在,我们需要浏览与“badwords”字段中一样多的“message”。我们将使用“for”循环。
for($k =0; $k <= count($badwords) - 1; $k++):
preg_match_all("/$badwords[$k]/i", $message, $out[])
endfor;
我们现在通过消息循环总共传递了 5 个(从 0 到 4)。使用正则表达式,我们将匹配的单词存储在“out”数组中,从而创建一个多维数组。现在你需要通过这个“out”字段。我们减小它的尺寸。
foreach ($out as &$value):
$value = $value[0];
endforeach;
我们现在将使用“for”循环再次遍历这个 out 字段并计算每个维度中值的数量。根据计算出的值,我们将为每场比赛分配 1 个罚分和一个重复。
for($n = 0; $n <= count($out)-1; $n++):
$penalty += count($out[$n]);
endfor;
结果是获得的分数。
这是 php 的源代码,位于 PHP Fiddle
http://phpfiddle.org/main/code/jzyw-hva6