以下のコードで達成したいこと:指定された単語の大文字と小文字を区別せず、テキスト内で1回だけ一致させ、それをリンクに置き換えます。
文字列内の「foo」という単語に一致する次の preg_match があります。
if (preg_match("/\bfoo\b/i", $text, $results, PREG_OFFSET_CAPTURE)) {
// substr_replace the word 'foo' for a link <a href..
}
HTML のないテキストでは問題ありませんが、HTML を含む次のテキストを想像してください。
Lorem ipsum dolor sit amet, <a href="/foo-bar/" title="foo bar">some other foo link</a> consectetur adipiscing elit foo bar.
この場合、現在のリンク内に新しいリンクが作成されます。これは、href 部分で foo と一致するためです (タイトルと名前の部分についても同じ問題です)。
HTML ステートメントの外側の 'foo' のみに一致するようにパターンを変更するにはどうすればよいですか?