中級プログラマの自宅でPHP ブログ

自宅用ポータルシステム「MyHome Portal」をオープンソースで公開。MyHome Portalの説明とエンハンス情報。

PHP5.4:htmlspecialchars非互換仕様変更

PHP5.4.0から、htmlspecialchars関数のデフォルト文字エンコーディングがISO-8859-1(Latin-1)からUTF-8に変更されるとのこと。

≪PHP5.4のhtmlspecialcharsに非互換問題≫

http://blog.tokumaru.org/2011/11/php54htmlspecialchars.html

PHPって、結構簡単にこういった下位互換の無い変更をやってくれます。PHP5からPHP6とかいったメジャーバージョンアップならまだしも、マイナーバージョンアップで、なぜこういった事をするのか理解に苦しみます。オプションの追加とかなら理解できるけど、デフォルトの変更って場合によっては影響が大きいですよね。

上記、記事を見る限りでは、内部文字エンコーディングとしてUTF-8を使っている場合は、影響がないと読み取れるので、MyHome Portalには影響がないかもしれないけど。

MyHome Portalの場合、htmlspecialchars()を、そのままは使っていなくて、以下のような共通関数my_htmlspecialchars()を作ってそれをコールしているので、影響があるとしても、これを修正するだけで済みますが。

function my_htmlspecialchars($str) {

return trim(str_replace("\", chr(0x5c), htmlspecialchars($str, ENT_QUOTES)));

}