2011-06-11 90 views
0

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

非常感谢

+3

请提供您正在使用的正则表达式。 – 2011-06-11 23:30:01

+0

是'preg_match'可以在单个单词上工作。发布您的正则表达式以及您想要完成的任务。 – Halcyon 2011-06-11 23:33:26

回答

0

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

它不会匹配“word1”的原因是因为您包含一个字词分隔符\b

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

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

原油,但有效。

0

preg_match将一个字符长在一根绳子上的工作。我认为这里的问题可能是你的正则表达式。我的猜测是,你正在测试空白,因为它没有发现它说没有匹配。尝试追加'^([^\s]*)$|'到您的正则表达式,我打赌它将开始拾取这些单词值。 ([^\s]手段给我任何事情中有没有空格,|手段“或”。通过将它添加到你的正则表达式的前面,它包括万物而不空白不管你已经有了)

+0

小修正:'preg_match'可以处理任何字符串,甚至是空字符串。 – Halcyon 2011-06-11 23:46:08

+0

不能相信我忘了发布我正在使用的正则表达式。 \ b(?:word1 | word2 | word3)\ b而我所需要做的就是从电子邮件主题行中抽出半个可能的单词中的一个。这些词代表了我正在处理的图像相册中的类别。我尝试了上面提到的额外代码,但它似乎没有工作。我会坚持下去,但是谢谢你的快速回复! – Mark 2011-06-11 23:48:50

相关问题