私のサイトには、検索結果で検索クエリが強調表示される機能があります。ただし、サイトが検索した一部のフィールドにはHTMLが含まれています。たとえば、で構成される検索結果があったとし<span>Hello all</span>
ます。ユーザーが文字を検索した場合、今返される厄介なコードではなくa
、コードを返してほしい。<span>Hello <mark>a</mark>all</span>
<sp<mark>a</mark>n>Hello <mark>a</mark>ll</sp<mark>a</mark>n>
でネガティブルックビハインドとルックアヘッドを使用して、がaと。の間にあるpreg_replace()
インスタンスを除外できることを知っています。しかし、どうすればそれを行うことができますか?正規表現は私の弱点の1つであり、その効果を思い付くことができないようです。a
<
>
これまでのところ、私が持っているのはこれです:
$return = preg_replace("/(?<!\<[a-z\s]+?)$match(?!\>[a-z\s]+?)/i", '<mark>'.$match.'</mark>', $result);
しかし、それは機能していないようです。何か助けはありますか?