我想把字符串中的一些短语作为单词匹配(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
答案 0 :(得分:2)
两个选项:
使用单词边界锚点(如果你处理的是实际的字母数字单词,则非常有用):
preg_match("/\b" . $word . "\b/i", $string);
或使用空格作为分隔符:
preg_match("/(?:^|\s)" . $word . "(?:\s|$)/i", $string);
如果您正在使用Unicode字符串并希望匹配Unicode字词,请不要忘记/u
修饰符。