そもそもなぜエンティティが存在するのか
HTMLは<や&のような一部の文字を構文として使うため、生のテキストに<が現れるとブラウザはタグの開始だと解釈してしまいます。エンティティを使えば、これらの文字を装飾指示ではなく表示用の文字としてそのまま文書に含めることができ、正確な「プレーンテキスト化」にはこれを元の文字へ戻す処理が欠かせません。
単純なタグ除去が破綻する場面
実際のHTMLは教科書のようには綺麗でなく、閉じタグの欠落、コピー時に分断されたタグ、実際のタグではない山カッコを含むコメントやスクリプトブロックなど、単純な検索置換では対応しきれないケースが頻出します。パターンマッチではなく正しいHTMLパーサーを使えば、こうした例外を正確に処理できます。
よくある質問
リンクからタグを除去すると、URLの情報も消えますか?
はい、多くの単純な処理では消えます。表示されているリンクの文字は残りますが、タグが持っていたリンク先(href)の情報はタグと一緒に失われます。もともと表示テキストの一部ではなかったためです。
タグの除去はセキュリティ対策のサニタイズと同じですか?
いいえ。タグ除去は表示や保存のために綺麗なプレーンテキストを作ることが目的で、サニタイズは悪意あるコードの実行を防ぐことが目的です。サニタイズには単純なタグ削除ではなく、実績のある専用ライブラリを使う必要があります。