WEB制作のための情報サイト / unazuki Library

esc_html()

基本構文と使い方(引数・実行結果)

基本構文

HTMLをエスケープし、安全な文字列として出力します。
具体的には、HTMLの中で使われる<>のような特殊文字を文字参照に変換します。例えば<は&lt;に>は&gt;に変換します。文字参照に変換することで、<>のようなHTMLにとって特別な意味を持つタグを単なる文字列として扱うことができます。これにより、呼び出すデータに危険な <script> などが仕込まれていてもscriptを実行しないため安全です。

esc_html($text);

引数

引数必須/任意引数に指定するもの
第1引数
$text
必須エスケープしたいHTML(文字列)

実行結果

戻り値(返す値):エスケープされた文字列を返します。
※表示するにはechoします。

例1.HTMLをエスケープする

<?php
$text = '<p>ここにテキストが入ります。</p>';
echo esc_html($text);
?>

結果:<p>ここにテキストが入ります。</p>
※pタグはプレーンな文字列になっているのでそのままブラウザに表示される。

例2.危険なコードをエスケープしない場合

下記の例では、scriptが実行されてしまいます。

<?php
$text = '<script>alert("危険なスクリプト!");</script>';
echo $text;
?>

結果:「危険なスクリプト!」というアラートをブラウザに表示。
この場合下記のようにエスケープします。

<?php
$text = '<script>alert("危険なスクリプト!");</script>';
echo esc_html($text);
?>

結果:<script>alert(“危険なスクリプト!”);</script>

学習者向け補足情報

【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。

【引数について】

  • 指定できる引数の数はテンプレートタグによって異なります。(引数なしもあり)
  • 引数ごとに必須 / 任意が決まっています。(必須は必ず指定、任意は指定しなければ初期値)
  • 引数名(例:$post)は仕様の便宜上の名前と考えてください。(この名前自体はテンプレートタグ実行に関係しません。各引数に何を指定するのかを理解していればOKです。)

よくある使い方

カスタムフィールドから値を呼び出す際にエスケープをする。

<?php $description = esc_html(get_field('description')); ?>
<p class='description'><?php echo $description; ?></p>

※get_fieldはプラグインACFで作成したカスタムフィールドを呼び出す関数

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
antispambot() エンティティ化したメールアドレスを返します。
esc_attr() 属性値をエスケープし、安全な文字列として出力します。
esc_url() URLをエスケープし、安全な文字列として出力します。