正規表現を使用して、特定の単語を強調表示するコードに取り組んでいます。
ここにあります:
function addRegEx($word){
return "/\b(\w+)?".$word."(\w+)?\b/i";
}
function highlight($word){
return "<span class=\"highlighted\">".$word[0]."</span>";
}
function customHighlights($searchString,$toHighlight){
$searchFor = array_map('addRegEx',$toHighlight);
$result = preg_replace_callback($searchFor,'highlight',$searchString);
return $result;
}
関数customHighlightsを使用して、特定のテキストで「車」という単語を検索するとします。
境界 - \b - メソッドを使用して、スクリプトはテキスト内の単語 car を検索します。
正規表現では、(\w+)?を追加しました。つまり、スクリプトは「car」を含む単語( cars、sportcars など) に一致します。
問題は、内部の html を台無しにすることです。次に例を示します。
This is a great car. Click here for <a href="http://cars.com">more</a>
スクリプトは、上記のリンクの URL にある car という単語に一致し、それにスパン クラスを追加して、html を台無しにします。
正規表現をどのように変更してこれを回避しますか?