WordPressのesc_htmlでHTMLをエスケープ処理する

WordPressのesc_htmlでHTMLをエスケープ処理する

WordPressのesc_htmlはHTMLをエスケープ処理するときに使用するWordPressで用意されている関数です。

esc_htmlを使用するクセが付いていなかったのでHTMLをWordPressでエスケープ処理する基本的な知識を簡単にまとめておきます。

参考になりそうな内容があれば役立ててください。

 

WordPressのesc_html関数

 

esc_htmlはWordPressの関数です。

以下の記述のようにesc_htmlのWordPress関数はパラメータを1つ受け付けます。

 

esc_html( $text )

esc_htmlのパラメータ

$text
(文字列) エスケープ処理するテキスト

初期値はありません。

esc_htmlの戻り値はエスケープ処理されたHTML文字列になります。

 

esc_htmlでHTMLをエスケープ処理してみる

 

練習がてらWordPressのesc_htmlでHTMLのタグをエスケープ処理してみると理解しやすくなるかもです。

 

<?php
    $html1 = '<a href="http://www.example.com/">リンクになる</a>';
    $html2 = esc_html( '<a href="http://www.example.com/">esc_html(文字列になる)</a>' );

    //結果を表示
    echo $html1;
?>

 

PHPで変数$html1と$html2を作り、$html1にはHTMLのaタグをそのまま代入します。

変数$html2にはWordPressのesc_htmlを使用してパラメータにHTMLのaタグをそのまま代入します。

$html1と$html2の出力結果を確認するだけなのですが、$html1をechoで出力してみると、aタグはHTMLとして出力されることになり、ブラウザの表示ではリンクとして出力されます。

 

Advertisement

 

次に$html2をechoで出力した場合はリンクに変換されずに、タグに使用している「<」や「>」そして「””」がWordPressのesc_htmlの処理によって特殊文字に変換され文字列で出力されます。

esc_htmlの戻り値を特殊文字のまま見た場合は以下のHTMLのようになります。

 

&lt;a href=&quot;http://www.example.com/&quot;&gt;esc_html(文字列になる)&lt;/a&gt;

 

上のHTMLは変数$html2に代入したesc_htmlのパラメータに記述したaタグの結果ですが、特殊文字への変換ツールを使用しても同じ結果になります。

 

HTML特殊変換文字ツール

 

WordPressのesc_htmlは、特殊文字への変換ツールを使用してHTMLのタグを特殊文字に変換する地道な作業をWordPress関数にして簡単にエスケープ処理をできるようにしてくれているという感じかと思います。

 

WordPressのesc_htmlの処理

 

WordPressのesc_htmlの処理に興味が湧いたのでPHPの読解が苦手ながらも確認してみました。

esc_htmlは以下のPHPコードのように処理をesc_html関数内でしています。

 

/ **
* HTMLブロックのエスケープ。
*
* @since 2.8.0
*
* @param string $ text
* @ return文字列
* /
function esc_html ( $ text ) {
            $ safe_text = wp_check_invalid_utf8 ( $ text );
            $ safe_text = _wp_specialchars ( $ safe_text 、 ENT_QUOTES );
            / **
            * HTMLで出力するためにクリーンアップおよびエスケープされた文字列をフィルタリングします。
            *
            * esc_html()に渡されたテキストから、無効な文字または特殊文字が削除されます
            *出力前。
            *
            * @since 2.8.0
            *
            * @param string $ safe_textエスケープされた後のテキスト。
            * @param string $ textエスケープされる前のテキスト。
            * /
apply_filters ('esc_html' 、$ safe_text 、$ text );を返します。
}

 

無効なUTF-8の文字チェックをして、エスケープ処理もしたのち、フィルターフックを適用して返す。ポンコツなこと言ってたらすいません。

esc_html関数のブロックでエスケープ処理の要になっていそうなのは以下の2つかと。

 

  • wp_check_invalid_utf8
  • _wp_specialchars

 

wp_check_invalid_utf8

UTF-8が適切かどうかチェックしているのが「wp_check_invalid_utf8

 

_wp_specialchars

エスケープ処理の対象になる文字列「&<>”\’」が含まれていれば PHPの htmlspecialchars() を適用しているのが_wp_specialchars

WordPressのesc_htmlの処理確認は以上です…

 

WordPressでエスケープ処理するesc_htmlの基本的なことを記事にしてみたわけですが、esc_htmlの使い道パターンみたいなことはWordPressを使ったコーディング経験を増やしていくのが覚える早道かもしれないです。

WordPressカテゴリの最新記事