0

文字列内のいくつかのフレーズを単語として一致させるためにtriyinしています(「単語」を含む結果が必要ないため、stristrは機能しません)

私はこのコードを使用します:

function striword($string, $word) {
    return preg_match("/(?:[[:space:]]|^)" . $word . "(?:[^\w]|$)/i", $string);
}

しかし、「これは文字列です」のような文字列と一致させようとすると、期待どおりに機能しません:(

例:

//Phrase to match: "soda and beer"

striword($string, "soda and beer");

String 1: "I like soda and beer" MATCH: TRUE
String 2: "I like soda and beerbum" MATCH: FALSE
String 3: "I like soda and beer, it's nice!" MATCH: TRUE
4

1 に答える 1

2

2 つのオプション:

単語境界アンカーを使用するか (実際の英数字の単語を扱う場合に便利です):

preg_match("/\b" . $word . "\b/i", $string);

または区切り文字としてスペースを使用します。

preg_match("/(?:^|\s)" . $word . "(?:\s|$)/i", $string);

/uUnicode 文字列を使用していて、Unicode 単語に一致させたい場合は、修飾子を忘れないでください。

于 2012-06-20T17:57:37.550 に答える