0

特定の単語を検索するために stripos() を使用しています。ただし、たとえば「fed」を検索すると、「federal」にも一致が返されますが、これは望ましくありません。それが単独の単語である場合にのみ、「fed」と一致させたいです。

これには preg_match を使用することを考えましたが、検索に配列を使用しているため、このタイプのパターン内でキャレット記号を使用できないようです。

キャレット記号なしで機能するコード:

if(preg_match("%$clean_title%",$clean_body))

動作しないコード:

if(preg_match("%^$clean_title%",$clean_body))

単語の後にコンマ (またはピリオド) があっても単語を一致させようとしているので、単語の境界はここでは機能しないと思います。

4

1 に答える 1

0

私はあなたがこのようなものを探していると思います:

preg_match("%\byour-string\b%", $clean_body)

your-stringこれは、スペース (前後) と、スペース、タブ、リターン、ダッシュ (-) などの他の非単語文字で区切られている場合に一致します。例: '...hello your-string something...' は一致しますが、'... hello someotheryour-string something…」はしません

コンマをオプションにしたい場合は、次のようにしてください: preg_match("%\byour-string,?\b%", $clean_body)

単語の境界は,、単語以外の文字と見なされるため、単語の後に , または . が必要な場合に機能するはずです。

于 2013-09-16T01:33:49.513 に答える