2012-03-13 4 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); 

しかし、その方法は、1つの単語だけに一致します。複数の単語を確認するにはどうすればよいですか?

+3

preg_match_all() –

+0

編集した質問 – Autolycus

答えて

15

ような何か:

あなたが "または" 正規表現のようにパイプ文字( |)を使用することができます
preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 
+0

を参照してください返さないしてくださいどのような#1 \ sは – Autolycus

+0

@Autolycusは私がスペース '\ S'を追加するつもりだったんありません単語の周りには、しかし、私はあなたがすでに単語境界 '\ b'を使用して気づいた。 – jeroen

+0

@Autolycus最初と最後の '# 'は、正規表現の先頭と末尾をマークします。大文字と小文字を区別しないマッチングのために'#i'のように最後にスイッチを追加できるようにする必要があります。 – jeroen

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

行方不明の区切り文字を見て、複数の値 –

+0

が編集した質問 – Autolycus

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変数を確認してください。

2

http://php.net/manual/en/function.preg-match.php

「するpreg_match()は、あなたが唯一の1つの文字列を別の文字列に含まれているかどうかを確認したい場合は、使用しないでください。strpos()またはその代わりにはstrstr()を使用して、彼らが速くなりますよう。」

関連する問題