単純なpreg_match_all
を使用して、テキスト内の単語のリストの出現を検索します。完全な単語のマッチング方法は?
しかし、これもabcword123
のようなサブセットに一致します。完全な単語としてのみ表示される場合はword1
、word2
、word3
が必要です。これは必ずしもカンマ、セミコロン、ピリオド、感嘆符、疑問符、または別の句読点にすることはできません。
単純なpreg_match_all
を使用して、テキスト内の単語のリストの出現を検索します。完全な単語のマッチング方法は?
しかし、これもabcword123
のようなサブセットに一致します。完全な単語としてのみ表示される場合はword1
、word2
、word3
が必要です。これは必ずしもカンマ、セミコロン、ピリオド、感嘆符、疑問符、または別の句読点にすることはできません。
"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
試してみてください。
$pattern = '/\b(word1|word2|word3)\b/';
$num_found = preg_match_all($pattern, $string, $matches);
あなたは単語の境界に一致するように\b
を使用することができます。だからあなたの正規表現として/\b(word1|word2|word3)\b/
を使用したいと思います。