我正在写一个基本的分类工具,将采取一个标题,然后将其与一个关键字数组进行比较。例如:PHP匹配字符串到多个关键字数组
$cat['dining'] = array('food','restaurant','brunch','meal','cand(y|ies)');
$cat['services'] = array('service','cleaners','framing','printing');
$string = 'Dinner at seafood restaurant';
是否有创造性的方法来循环这些类别或查看哪些类别具有最匹配的?请注意,在“餐饮”数组中,我使用正则表达式来匹配单词candy的变体。我尝试以下,但这些类别名单越来越长的很漂亮,我想知道如果这是最好的方法:
$keywordRegex = implode("|",$cat['dining']);
preg_match_all("/(\b{$keywordRegex}\b)/i",$string,$matches]);
谢谢你,史蒂夫
编辑: 感谢@jmathai,我是能够添加排名:
$matches = array();
foreach($keywords as $k => $v) {
str_replace($v, '#####', $masterString,$count);
if($count > 0){
$matches[$k] = $count;
}
}
arsort($matches);
+0
不知道PHP太好,但我怀疑哈希会比正则表达式更快。如果你有一个值作为一个实际的正则表达式(如cand(y | ies))作为正则表达式运行它,例如把正则表达式值放入一个单独的散列表中。 –
2011-02-05 02:04:46