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として出力されることになり、ブラウザの表示ではリンクとして出力されます。
次に$html2をechoで出力した場合はリンクに変換されずに、タグに使用している「<」や「>」そして「””」がWordPressのesc_htmlの処理によって特殊文字に変換され文字列で出力されます。
esc_htmlの戻り値を特殊文字のまま見た場合は以下のHTMLのようになります。
<a href="http://www.example.com/">esc_html(文字列になる)</a>
上のHTMLは変数$html2に代入したesc_htmlのパラメータに記述したaタグの結果ですが、特殊文字への変換ツールを使用しても同じ結果になります。
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を使ったコーディング経験を増やしていくのが覚える早道かもしれないです。