簡體   English   中英

匹配字符串內的UTF-8短語與preg_match()

[英]Match UTF-8 phrase inside string with preg_match()

我是triyin匹配字符串中的一些短語作為一個單詞(stristr不起作用因為我不想要包含“單詞”的結果)

我用這個代碼:

function striword($string, $word) {
    return preg_match("/(?:[[:space:]]|^)" . $word . "(?:[^\w]|$)/i", $string);
}

但是當我嘗試匹配像“這是一個字符串”這樣的字符串時,它不能按預期工作:(

例:

//Phrase to match: "soda and beer"

striword($string, "soda and beer");

String 1: "I like soda and beer" MATCH: TRUE
String 2: "I like soda and beerbum" MATCH: FALSE
String 3: "I like soda and beer, it's nice!" MATCH: TRUE

兩種選擇:

使用單詞邊界錨點(如果您處理的是實際的字母數字單詞,則非常有用):

preg_match("/\b" . $word . "\b/i", $string);

或者使用空格作為分隔符:

preg_match("/(?:^|\s)" . $word . "(?:\s|$)/i", $string);

如果您正在使用Unicode字符串並希望匹配Unicode字,請不要忘記/u修飾符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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