【发布时间】:2011-02-05 00:57:18
【问题描述】:
我正在编写一个基本的分类工具,它将获取一个标题,然后将其与一组关键字进行比较。示例:
$cat['dining'] = array('food','restaurant','brunch','meal','cand(y|ies)');
$cat['services'] = array('service','cleaners','framing','printing');
$string = 'Dinner at seafood restaurant';
是否有创造性的方法来循环浏览这些类别或查看哪个类别的匹配度最高?请注意,在 'dining' 数组中,我有正则表达式来匹配单词 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);
【问题讨论】:
-
不太了解 php,但我怀疑散列会比正则表达式更快。如果您将其中一个值作为实际的正则表达式(如 cand(y|ies) 将其作为主题的正则表达式运行,例如将正则表达式值放入单独的哈希中。