计算字符串中的php数组出现次数

时间:2012-05-22 01:48:47

标签: php

我有一个字符串和一组值,我想检查一个数组中的项目出现在字符串中的次数。

这是最快的方法吗?

$appearsCount = 0;

$string = "This is a string of text containing random abc def";
$items = array("abc", "def", "ghi", "etc");

foreach($items as $item)
{
    $appearsCount += substr_count($string, $item);
}

echo "The item appears $appearsCount times";

2 个答案:

答案 0 :(得分:2)

您可能会发现正则表达式很有用:

$items = array('abc', 'def', 'ghi', 'etc');
$string = 'This is a string of text containing random abc def';

$appearsCount = count(preg_split('/'.implode('|', $items).'/', $string)) - 1;

当然,您必须注意不要使正则表达式无效。 (例如,如果它们在正则表达式的上下文中包含特殊字符,则需要正确转义$items中的值。)

这是与多个子字符串计数完全相同,因为重叠项目不会被基于正则表达式的拆分计算两次。

答案 1 :(得分:1)

最快,可能 - 至少你不可能通过任意输入获得更快的速度。但请注意,您可能不是entirely correct

$appearsCount = 0;

$string = "How many times is 'cac' in 'cacac'?";
$items = array("cac");

foreach($items as $item)
{
    $appearsCount += substr_count($string, $item);
}

echo "The item appears $appearsCount times";