0

我正在尝试将字符串中的某些短语作为单词匹配(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
4

1 回答 1

2

两种选择:

要么使用单词边界锚(如果您正在处理实际的字母数字单词,则很有用):

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

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

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

如果您使用 Unicode 字符串并想匹配 Unicode 单词,请不要忘记/u修饰符。

于 2012-06-20T17:57:37.550 回答