テキスト ブロック内のキーワードに一致する正規表現を作成しようとしています。これらのキーワードにはリンクが追加されます。すでにリンク内にあるキーワードは一致しません。
90% の道のりをたどった投稿を見つけました - HTML タグ <a> の外側のキーワードに一致する PHP 正規表現
ただし、このソリューションでは、img alt 属性内の任意のキーワードが一致し、img タグが壊れます。alt 属性内のキーワードを許可しないように正規表現を修正する方法はありますか?
これが私が今持っている正規表現です(PHPで):
$content = preg_replace(' ~'.$keyword.'(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i', '<a href="'.$url.'">$0</a>', $content);
私はキーワード/ URLの配列を持っています。
'consectetur' => '/path/to/consectetur'
したがって、次のテキストがあるとします。
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
キーワード「consectetur」は次のように置き換えます。
<a href="/path/to/consectetur">consectetur</a>
ただし、ここに表示される場合はそうではありません:
<img src="..." alt="consectetur adipisicing elit">
またはここ:
<a href="">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</a>