2011-03-20 52 views
0

這可能是一個常見的問題,但我的情況是:PHP找到一個純文本複雜的關鍵字(字符串)

假設 我的關鍵詞是「黑胡椒」 和我的純文本是一個食譜,包含了我想這個詞「胡椒」

是打包突出字胡椒,不只是辣椒(eventhough後者可能是一個很好的achievemet以及)

是有可能p中HP使用preg_match? shoudl我分裂關鍵字和craeate多重比較?

謝謝

回答

2

這個問題很不清楚。你想突出顯示與黑胡椒有關的一切嗎?在胡椒的情況下,這很容易,因爲它與胡椒在一個單詞中。但是如果文本中包含「黑鳥」,那麼你會突出顯示這個詞嗎?

你要做的事情需要智力或至少是一個複雜的詞彙方法,你不能用算法來解決它。

如果您的關鍵字只是胡椒,它變得更容易,但只有胡椒只有一個含義。在這種情況下,你可以突出顯示所有有胡椒的東西。但是你會錯過使用多個單詞的術語。在這裏,你需要再次使用詞法。如果你的引擎知道黑胡椒和白胡椒是辣椒的亞模式,那麼它就可以工作。

+0

我看到點...有趣...和艱難! – Francesco 2011-03-20 16:07:51

+0

讓我們說'我應該有一個數據庫,其中包含標記爲成分的術語和標記爲形容詞的術語,所以當我進行匹配時,我可以只選擇那些成分並排除其餘部分的術語......對嗎?有點? – Francesco 2011-03-20 16:11:21

+0

實際上現在我想的更好,可能會讓人困惑,因爲如果我搜索辣椒,我可以找到辣椒辣椒等,這些都與黑胡椒無關......嗯,我認爲我的想法很難實現在這一點上... – Francesco 2011-03-20 16:15:31

1

如果拆分的關鍵字,並插入符粘合在一起他們,你可以把它們作爲一個簡單的正則表達式的一部分:

$result = preg_replace("/(\w*(?:black|pepper)\w*)/i", "<b>$1</b>", $target_text); 

編輯:從正則表達式的標誌去除克,記住它的功能錯誤