当前位置: 首页 > 面试题库 >

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

杜禄
2023-03-14
问题内容

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

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

例如:

CHECKSOUND
SOUND
CHECK

因此,我需要检查当前行是否具有CHECKSOUND,SOUND或CHECK命令。

如果我使用类似:

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

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

问题

有没有一种方法可以只查找整个单词(如SOUND)的出现,而忽略出现的SOUND(如果它作为另一个单词(如CHECKSOUND)的一部分而被发现)?

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


问题答案:

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

html" target="_blank">示例2来自以下文档preg_match

/* 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”的搜索不区分大小写。



 类似资料:
  • 我有这些线。我希望有一个正则表达式来匹配它们,并在将它们传递给preg_match函数时返回true。 如何在正则表达式中创建与上述模式匹配的模式?像这样: 星号(*)表示任何单词。这是我目前掌握的正则表达式模式: 格式在单词上不匹配。如何在单词上匹配字符串?

  • 问题内容: 我想用php代替完整的单词 示例:如果我有 我用 新文本应如下所示 新hello1您好,Helloz PHP返回 NEW hello1 hello,NEWz 谢谢。 问题答案: 您要使用正则表达式。该单词边界匹配。 如果包含UTF-8文本,则必须添加Unicode修饰符“ u”,以便不会将非拉丁字符误解为单词边界:

  • 问题内容: 我正在编写一段代码,例如,如果我有,我只需要查找完整的单词 并且我正在搜索“ t”,那么我应该找不到任何单词。 谁能告诉我如何用Java编写这样的程序? 问题答案: 我将正则表达式用于此类任务。在您的情况下,它应如下所示: 简短说明: 。匹配任何字符,*?是 零次或多次 ,\ b是 单词边界 。 有关正则表达式的更多信息,请参见此处或专门针对Java 。

  • 这是一个简单的问题,但请听我说完--Java家庭作业的一部分有一个密码验证器方法。要求是简单的-密码必须在6-10个字符之间,必须只由数字或字母,并必须有至少2个数字在它是有效的。我使用if语句并使用regex实现了这一点,出于某种原因,我无法使非单词字符regex匹配,尽管每个在线regex检查器都显示这应该是有效的,甚至用于regex检查的jetbrains插件也显示这应该是有效的。(我也明白

  • 问题内容: 如何在PHP中20个单词后截断字符串? 问题答案: 输出:

  • 问题内容: 我正在寻找一些类似的东西 其中是句子的集合,并且是每行的字符长度。它可能会很长,我想将其基本上以数组的形式分成多行。 例如 问题答案: 这段代码避免打断单词,您不会使用wordwrap()来获得它。 最大长度使用定义。我已经做过一些测试,并且工作正常。