2011-06-11 110 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

相關問題