HTMLエスケープ・アンエスケープ

< > & などのHTML特殊文字を &lt; のような実体参照に変換したり、元に戻したりできます。

HTMLエスケープとは

HTMLでは < や > がタグの開始・終了として解釈されます。これらの文字をそのまま文字として表示したいときは、文字実体参照に置き換える必要があります。この置き換えを HTML エスケープと呼びます。

文字実体参照数値参照
&&amp;&#38;
<&lt;&#60;
>&gt;&#62;
"&quot;&#34;
'&apos;&#39;

どんなときに使う?

  • ブログや技術記事に HTML / XML のソースコードを掲載するとき
  • メールテンプレートや CMS で記号が崩れるとき
  • XSS(クロスサイトスクリプティング)対策として、ユーザー入力が正しくエスケープされているか確認するとき
  • スクレイピングで取得した &amp; だらけのテキストを読める形に戻すとき

アンエスケープの対応範囲

アンエスケープは &nbsp; &copy; などの名前付き実体参照、&#12354; のような10進数値参照、&#x3042; のような16進数値参照のすべてに対応しています。

よくある質問

シングルクォートはなぜ &#39; なのですか?

&apos; は HTML4 で定義されておらず、古いブラウザで表示されないことがあるため、互換性の高い数値参照 &#39; を使っています。

エスケープだけでXSS対策は十分ですか?

HTML本文や属性値の中ではエスケープが基本の対策です。ただし href 属性の javascript: スキームや、<script> 内への出力などは別の対策が必要です。