2012-03-13 179 views
8

我想測試一個字符串以查看它是否包含某些單詞。preg_match用於多個單詞

即:

$string = "The rain in spain is certain as the dry on the plain is over and it is not clear"; 
preg_match('`\brain\b`',$string); 

但該方法僅匹配一個字。我如何檢查多個單詞?

+3

preg_match_all() – 2012-03-13 18:02:17

+0

請參閱編輯的問題 – Autolycus 2012-03-13 18:05:33

回答

15

喜歡的東西:

preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 
+0

是什麼#\ S不 – Autolycus 2012-03-13 18:10:59

+0

@Autolycus我要添加一個空格'\ s'圍繞這些單詞,但是我注意到你已經使用了一個單詞邊界'\ b'。 – jeroen 2012-03-13 18:13:01

+0

@Autolycus開始和結束處的'#'標記正則表達式的開始和結束,並且是必需的(或其他任何字符),以便您可以在末尾添加開關,例如不區分大小寫的匹配的'#i'。 – jeroen 2012-03-13 18:14:54

2
preg_match('\brain\b',$string, $matches); 
var_dump($matches); 
+0

缺少分隔符,並且不返回多個值 – 2012-03-13 18:04:03

+0

請參閱編輯的問題 – Autolycus 2012-03-13 18:05:53

3
preg_match('~\b(rain|dry|certain|clear)\b~i',$string); 

您可以使用管道字符(|)的容器中 「或」 正則表達式。

如果您只需要知道是否存在任何字詞,請使用上述preg_match。如果您需要匹配任何的話所有的出現次數,使用preg_match_all

preg_match_all('~\b(rain|dry|certain|clear)\b~i', $string, $matches); 

然後檢查$matches變量。