SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【php5.4】htmlspecialchars関数の動きが変わった

問題

phpを5.4にした。

EUC-JPのサイトで、文字が表示されない。htmlspecialchars()すると、文字が表示されない。

<?php
//ソースはEUC-JP
$a = 'テスト';
echo htmlspecialchars($a);

htmlspecialchars-5.4

答え

php5.4からhtmlspecialcharsの動作が変わった。

http://php.net/manual/ja/function.htmlspecialchars.php

(第3引数)encoding

変換に使用されるエンコーディングを指定します。 省略した場合のデフォルト値は、PHP 5.4.0 より前のバージョンでは ISO-8859-1、そして PHP 5.4.0 以降では UTF-8 となります

EUC-JPなどUTF-8以外のサイトでは、htmlspecialchars()するとき、文字コードも指定しなくてはならないようです。

<?php
//ソースはEUC-JP
$a = 'テスト';
echo htmlspecialchars($a, ENT_COMPAT | ENT_HTML401, 'EUC-JP');

htmlspecialchars-5.4-2

関連するメモ

コメント