我正在寫一個基本的分類工具,將採取一個標題,然後將其與一個關鍵字數組進行比較。例如: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);
不知道PHP太好,但我懷疑哈希會比正則表達式更快。如果你有一個值作爲一個實際的正則表達式(如cand(y | ies))作爲正則表達式運行它,例如把正則表達式值放入一個單獨的散列表中。 – sln 2011-02-05 02:04:46