簡體   English   中英

preg_match_all:包括非ASCII字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM