解析一系列字符串命令,我需要知道字符串是否包含特定的关键字。
我知道这听起来很简单,但是当命令关键字也可能是另一个单词的一部分时,就会出现问题。
例如:
CHECKSOUND
SOUND
CHECK
所以我需要检查当前行是否有CHECKSOUND,SOUND或CHECK命令。
如果我使用类似的东西:
if(stristr($line,'SOUND') == true)
然后它可能会在CHECKSOUND
之前找到SOUND
,因此无法正确解析。
问题:
有没有办法找到像SOUND这样的整个单词的出现,如果找到另一个单词如CHECKSOUND的一部分,则忽略出现的声音?
我确信我在这里缺少一些简单的东西。
答案 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”不区分大小写。