cakephpのh()について

よく分かっていなかったのでメモ。

cakephpのh()は、htmlspecialchars()のラッパー。

htmlspecialchars()の仕様

<?php
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

htmlspecialchars()の方には、下記のようなエスケープ方法を指定できる。

ENT_COMPAT → ダブルクォートは置き換えるが、シングルクォートは置き換えない
ENT_QUOTES → シングルクォートとダブルクォートの両方を置き換える
ENT_NOQUOTES→ シングルクォートとダブルクォートの両方を置き換えない

h()の仕様

<?php
h(string $text, boolean $double = true, string $charset = null)

h()はエスケープ方法が、ENT_QUOTESで固定されている。

第2引数の$doubleはhtmlspecialchars()の第4引数に渡される値ぽい(詳細は不明)

$charsetはデフォルトでcore.phpのApp.encodingの値。設定されていなければUTF-8となる。