如何在没有意外匹配的情况下在 PHP 中的字符串中查找整个单词?
Posted
技术标签:
【中文标题】如何在没有意外匹配的情况下在 PHP 中的字符串中查找整个单词?【英文标题】:How to find a whole word in a string in PHP without accidental matches? 【发布时间】:2011-05-18 13:53:03 【问题描述】:解析一个字符串命令数组,我需要知道一个字符串是否包含特定的关键字。
我知道听起来很简单,但是当命令关键字也可能是另一个词的一部分时,问题就来了。
例如:
CHECKSOUND
SOUND
CHECK
所以我需要检查当前行是否有 CHECKSOUND、SOUND 或 CHECK 命令。
如果我使用类似的东西:
if(stristr($line,'SOUND') == true)
那么它可能会在SOUND
之前找到CHECKSOUND
,因此无法正确解析。
问题:
有没有办法只查找整个单词(如 SOUND)的出现,如果发现作为另一个单词(如 CHECKSOUND)的一部分,则忽略出现的 SOUND?
我确定我在这里遗漏了一些简单的东西。
【问题讨论】:
【参考方案1】:您可以使用正则表达式轻松实现目标。
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”不区分大小写。
【讨论】:
以上是关于如何在没有意外匹配的情况下在 PHP 中的字符串中查找整个单词?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 5.3 中,如何在没有严格警告的情况下在一行中获取单个元素数组中的值
如何在没有 foreach 的情况下在 PHP 中使用键和值来内爆数组
如何在没有 Artisan 的情况下在 Xampp 上运行 laravel
如何在没有加入的情况下在 BigQuery 的同一个表中选择匹配项