私のサイトには、フォーラムの投稿を検索する検索機能があります。検索は、MySQL SELECT ステートメントを使用して実行されます。
SELECT *
FROM my_table
WHERE post_text LIKE '%$search_string%';
一致すると、見つかった投稿を返し、元の投稿内の用語を強調表示します。
function highlight_finds($search_text, $search_for){
$replacement_string = "<mark>".$search_for."</mark>";
$replaced_text = str_ireplace($search_for, $replacement_string, $search_text);
return $replaced_text;
}
echo highlight_finds(stripslashes($post_text), $search_string);
改行は、データベース テーブル内の「br」で説明されます。
line 1 <br /> <br /> line 2 <br /> <br /> line 3
検索用語「br」を使用して上記の highlight_finds 関数を実行すると、次の HTML が返されます。
line 1 <<mark>br</mark> /><<mark>br</mark> />line 2
<<mark>br</mark> /><<mark>br</mark> />line 3
mark タグは br タグの周囲に配置され、改行のある投稿はすべて結果に返され、br タグとともに表示されます。
"br"、"b"、または "r" という用語を検索するときに改行タグが返されないようにする最善の方法は何ですか?