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