文字を HTML の中に出す前に、<・>・&・"・' を記号の形(< など)に変えます。利用者が入れた文字に含まれるタグが、そのまま動いてしまうのを防ぎます(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 との違い
- すでに
&のようになっているものを、もう一度変えません(二重にエスケープしない)。 - 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():URLesc_html__()・esc_html_e():翻訳してからエスケープwp_kses_post():決まったタグだけ残す- htmlspecialchars()(PHP):WordPress を使わない PHP で文字をエスケープする



