PHP如何不区分大小写从句子中精准查找独立完整单词
问题根因
stristr本身是子串匹配函数,仅判断待查字符串是否作为字符序列存在于目标文本中,不会校验匹配内容是否为独立完整单词。你当前的代码里,farmhouse包含连续的farm字符序列,自然会被判定为匹配,和你需要匹配独立单词的预期不符。
正确实现方案
要实现大小写不敏感的独立完整单词匹配,使用带单词边界\b的正则匹配即可:
- 用
preg_match执行正则匹配,加i修饰符实现大小写不敏感 - 正则中用
\b标记单词边界,它会匹配单词字符(字母、数字、下划线)和非单词字符的交界位置,确保只会命中独立完整的单词,不会匹配长单词内嵌的子串 - 调用
preg_quote对待查询单词做转义,避免单词内存在正则特殊字符导致匹配异常
参考代码:
$sentence = 'I live in a farmhouse'; $targetWord = 'farm'; // 拼接正则规则,/i修饰符代表大小写不敏感 $matchRule = '/\b' . preg_quote($targetWord, '/') . '\b/i'; if(preg_match($matchRule, $sentence)){ echo 'true'; }else{ echo 'false'; }
上述代码运行后会正确输出false;如果把句子替换为I work on a farm,则会正确输出true。
内容的提问来源于stack exchange,提问作者ku234
相关产品推荐
相关产品推荐

