2011-01-06 28 views
0

単純なpreg_match_allを使用して、テキスト内の単語のリストの出現を検索します。完全な単語のマッチング方法は?

しかし、これもabcword123のようなサブセットに一致します。完全な単語としてのみ表示される場合はword1word2word3が必要です。これは必ずしもカンマ、セミコロン、ピリオド、感嘆符、疑問符、または別の句読点にすることはできません。

答えて

3

"word1"、 "word2"、 "word3"などと一致するように探している場合は、in_arrayを使用すると常に良好です。正規表現は非常に強力ですが、それはまた、CPUの多くの力を必要とします。だから、それを避ける際に、これまで可能

$words = array ("word1", "word2", "word3"); 
$found = in_array ($string, $words); 

in_array

の詳細については、チェックPHP: in_array - Manualあなたは正規表現を使用したい場合にのみ

$pattern = '/^(word1|word2|word3)$/'; 
$num_found = preg_match_all($pattern, $string, $matches); 

を試して、しようと、あなたのような何かを取得したい場合"this statement has word1 in it"とし、

$pattern = '/\b(word1|word2|word3)\b/'; 
$num_found = preg_match_all($pattern, $string, $matches); 
のように "\b"を使用します。

その他の詳細PHP: Escape sequences - Manual\b

1

試してみてください。

$pattern = '/\b(word1|word2|word3)\b/'; 
$num_found = preg_match_all($pattern, $string, $matches); 
1

あなたは単語の境界に一致するように\bを使用することができます。だからあなたの正規表現として/\b(word1|word2|word3)\b/を使用したいと思います。

関連する問題