如何在PHP中查找字符串中的整个单词而不会发生意外匹配?

时间:2010-12-01 15:31:49

标签: php regex parsing

解析一系列字符串命令,我需要知道字符串是否包含特定的关键字。

我知道这听起来很简单,但是当命令关键字也可能是另一个单词的一部分时,就会出现问题。

例如:

CHECKSOUND
SOUND
CHECK

所以我需要检查当前行是否有CHECKSOUND,SOUND或CHECK命令。

如果我使用类似的东西:

if(stristr($line,'SOUND') == true)

然后它可能会在CHECKSOUND之前找到SOUND,因此无法正确解析。

问题

有没有办法找到像SOUND这样的整个单词的出现,如果找到另一个单词如CHECKSOUND的一部分,则忽略出现的声音?

我确信我在这里缺少一些简单的东西。

1 个答案:

答案 0 :(得分:21)

您可以使用正则表达式轻松实现目标。

preg_match文档中的示例#2:

/* The \b in the pattern indicates a word boundary, so only the distinct
 * word "web" is matched, and not a word partial like "webbing" or "cobweb" */
 if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
     echo "A match was found.";
 } else {
     echo "A match was not found.";
 }

请注意,上面的示例使用i修饰符,这使得搜索“web”不区分大小写。