2011-04-27 44 views
2

Code samplePHP正則表達式:對於英語和阿拉伯語文字

搜索的文章我在尋找這是在英語和阿拉伯語的關鍵字的文章。 這些文章可以是英文或阿拉伯文。

我當前的代碼是:

$k = implode("|", $keywords); 
$regexp = "/(?i)\b(".$k.")\b/"; 
preg_match_all($regexp, $content, $matches); 

但是,這並不在出於某種原因阿拉伯語文章查找關鍵字。我已驗證關鍵字和文章正在被正確讀取;沒有編碼問題。

我能做些什麼來解決這個問題?請注意,我無法檢測文章或關鍵字是英文還是阿拉伯文,所以必須有一個正則表達式來匹配它們。

回答

1

你的正則表達式可能只是缺乏/u nicode標誌:

$regexp = "/(?i)\b(".$k.")\b/u"; 

否則PCRE有比較字節。在這種情況下,它可能仍然能夠找到單詞(當UTF-8編碼完全相同時),但不會檢測到單詞\b

更新
\b真的只檢測\w邊界(所以取決於語言環境,而不是設置的/ u標誌)。然後嘗試這個,而不是使用斷言:

$regexp = "/(?<!\p{L})(".$k.")(?!\p{L})/ui"; 
+0

不,沒有工作! – HyderA 2011-04-27 10:40:21

+0

剛剛測試過。單詞邊界不適用於阿拉伯語。 **編輯:**那麼解釋它:http://www.mail-archive.com/[email protected]/msg00110.html – mario 2011-04-27 10:47:52

+0

最優秀的!這很有道理。感謝您的鏈接! – HyderA 2011-04-27 11:00:48

相關問題