我试图从电子邮件主题行中抽出一个词作为附加电子邮件的类别。只要Preg_match不只是一个单词(这就是我想要做的事情),Preg_match很有效。如果主题行中只有一个单词,我只是得到一个空数组。在这种情况下,我试图将$匹配视为一个变量,但这也不起作用。任何人都可以告诉我,preg_match是否可以在单个单词上工作,或者更好的方法是做什么?Preg_match何时字符串有时是单个单词?
非常感谢
我试图从电子邮件主题行中抽出一个词作为附加电子邮件的类别。只要Preg_match不只是一个单词(这就是我想要做的事情),Preg_match很有效。如果主题行中只有一个单词,我只是得到一个空数组。在这种情况下,我试图将$匹配视为一个变量,但这也不起作用。任何人都可以告诉我,preg_match是否可以在单个单词上工作,或者更好的方法是做什么?Preg_match何时字符串有时是单个单词?
非常感谢
假设\b(?:word1|word2|word3)\b
它不会匹配“word1”的原因是因为您包含一个字词分隔符\b
。
你可以做的是只是单纯地总是注入单词分隔符:
preg_match("\b(?:word1|word2|word3)\b", "." . $subject . ".", $matches);
原油,但有效。
preg_match
将一个字符长在一根绳子上的工作。我认为这里的问题可能是你的正则表达式。我的猜测是,你正在测试空白,因为它没有发现它说没有匹配。尝试追加'^([^\s]*)$|'
到您的正则表达式,我打赌它将开始拾取这些单词值。 ([^\s]
手段给我任何事情中有没有空格,|
手段“或”。通过将它添加到你的正则表达式的前面,它包括万物而不空白或不管你已经有了)
请提供您正在使用的正则表达式。 – 2011-06-11 23:30:01
是'preg_match'可以在单个单词上工作。发布您的正则表达式以及您想要完成的任务。 – Halcyon 2011-06-11 23:33:26