当字符串有时是一个单词时,Preg_match?

时间:2011-06-11 23:25:56

标签: php regex preg-match

我正试图从电子邮件主题行中删除一个词,以用作附加电子邮件的类别。 Preg_match可以很好地工作,只要它不只是一个单词(这是我想要做的事情)。如果主题行中只有一个单词,我只得到一个空数组。在这种情况下,我试图将$ match视为一个变量,但这也不起作用。任何人都可以告诉我preg_match是否可以处理一个单词,或者更好的方法是什么?

非常感谢

2 个答案:

答案 0 :(得分:0)

preg_match将处理一个字符长的字符串。我认为这里的问题可能是你的正则表达式。我的猜测是你正在测试空白,因为它没有找到任何它说没有匹配。尝试将'^([^\s]*)$|'附加到您的正则表达式,我打赌它将开始获取这一个单词值。 ([^\s]表示给我任何没有空格的内容,|表示'或'。通过将其添加到正则表达式的前面,它将包含没有空格的内容你已经拥有的任何东西)

答案 1 :(得分:0)

假设\b(?:word1|word2|word3)\b

它与“word1”不匹配的原因是因为你包含了一个单词分隔符\b

你可以做的只是简单地注入单词分隔符:

preg_match("\b(?:word1|word2|word3)\b", "." . $subject . ".", $matches);

粗暴但有效。