テキスト内のキーワードを、そのキーワードの詳細ウィンドウを開くアンカーに置き換えようとしています。これは私が置換に使用するコードです:
$pattern = '%\b('.$keyword['Keyword'].')\b(?![^<]*</a>)%i';
$replacement = '<a href="#detalii_keyword_'.$keyword['CodKeyword'].'" data-toggle="modal"><strong>\\1</strong></a>';
$text = preg_replace($pattern, $replacement, $text);
アンカー内にある単語を回避するように構築されているため、すでに置き換えられている複数単語のキーワードを回避します。したがって、すでに置き換えられている「detalii deviz」では、「deviz」を置き換えません。例外は、探している単語がアンカーの最初の単語でない場合を除いて、すべての場合に機能します。したがって、たとえば、「deviz」を置き換え<a>deviz detalii</a>
たり、置き換えたりすることはありません<a>deviz</a>
が、置き換えます<a>detalii deviz</a>
。
パターンを変更して、正規表現がアンカー内の単語と一致しないようにするにはどうすればよいですか。