[英]preg_match_all: Include non-ASCII characters
我有一個preg_match_all來搜索段落中的單詞。 它找不到西里爾字母等。我該如何更改以處理所有類型的字符(英語,西里爾字母,帶重音的字符等):
preg_match_all( '/\b' . $testWord .'\b/i', $content, $matches, PREG_OFFSET_CAPTURE );
我試圖將u添加到正則表達式的末尾,這似乎是一個解決方案,但是我在這里詢問是否是最佳實踐,或者是否有更好的方法來顯示正則表達式。
preg_match_all( '/\b' . $testWord .'\b/iu', $content, $matches, PREG_OFFSET_CAPTURE );
謝謝
不幸的是,即使使用u
修飾符,單詞邊界速記\\b
也會起作用(即與您期望的位置不匹配。)您將需要用負的環顧四周替換它們以檢查\\pL
(任何字母)或\\pM
(任何重音符號。)
像這樣:
preg_match_all(
'/(?<![\pL\pM])' . $testWord .'(?![\pL\pM])/iu',
$content,
$matches,
PREG_OFFSET_CAPTURE
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.