htmlspecialcharsの変換条件を増やす
htmlspecialchars
で変換される内容は、get_html_translation_table
で得られる変換テーブルで取得できる。以下はENT_QUOTES
の場合。
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
var_dump($table);
array(5) {
["""]=>
string(6) """
["&"]=>
string(5) "&"
["'"]=>
string(6) "'"
["<"]=>
string(4) "<"
[">"]=>
string(4) ">"
}
ここに条件を加えると、htmlspecialchars
の変換条件を増やすことができる。例えばENT_QUOTES
をオプションに与えたとき、空白文字もエンコードしたい場合は以下になる。
$h = htmlspecialchars('hello world', ENT_QUOTES, "UTF-8");
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$table[' '] = ' ';
$encode = strtr($h, $table);
// string(84) "<p id="test">hello world</p>"
var_dump($encode);
このように挙動を多少変えることができる。