esc_html():HTML に出す文字をエスケープする(WordPress)

文字を HTML の中に出す前に、<・>・&・"・' を記号の形(&lt; など)に変えます。利用者が入れた文字に含まれるタグが、そのまま動いてしまうのを防ぎます(XSS の守り)。

書き方

esc_html( string $text ): string

使い方の例

$name = get_post_meta( get_the_ID(), 'shop_name', true );
echo '<p>店名:' . esc_html( $name ) . '</p>';

// タグを文字として見せたいとき
echo esc_html( '<strong>太字</strong>' ); // 画面には <strong>太字</strong> と出る

PHP の htmlspecialchars との違い

  • すでに &amp; のようになっているものを、もう一度変えません(二重にエスケープしない)。
  • UTF-8 として正しくない文字が入っていると、空の文字を返します。
  • WordPress の中では htmlspecialchars( $text, ENT_QUOTES, 'UTF-8' ) の代わりに esc_html() を使うのが決まりです。

よくある間違い

  • 属性の中に使う:value="…" や title="…" の中は esc_attr() を使います。
  • URL に使う:href・src は esc_url() です。javascript: のような危ない URL を外してくれます。
  • 保存する前にかけてしまう。エスケープは「出す直前」に 1 回だけです。
  • タグを残したい文(本文など)に使うとタグが全部文字になります。決まったタグだけ残すなら wp_kses_post() です。

関連する関数

  • esc_attr():属性の値
  • esc_url():URL
  • esc_html__()・esc_html_e():翻訳してからエスケープ
  • wp_kses_post():決まったタグだけ残す
  • htmlspecialchars()(PHP):WordPress を使わない PHP で文字をエスケープする

逆引きリファレンスの一覧へ

サイドバー

よく使うカスタマイズ

最近の記事

  1. Fstyle Final Output Replacer のルールの一覧(generator タグを消す 2 つのルール)

Profile

PAGE TOP