PHP5.5の「下位互換性のない変更点」(下記ページ)
http://php.net/manual/ja/migration55.incompatible.php
に記載されている「大文字小文字を区別しない比較がロケールに依存しなくなる」の内容について具体的にどのロケール及びコードで過去バージョンと差異が発生するのか、ご教示頂けないでしょうか。
認識しているロケールごとにmb_internal_encodingも変更して確認してみましたが、全てPHP5.5とPHP5.4で同じ結果が返ってきます。
(ロケールによって結果は異なりますが・・・)
PHP5.4と5.5で結果が異なる具体的なコードをご教示頂けると有難いです。
###確認したソースコードの一部(環境:CentOS6.4-ファイルの文字コードはUTF8)
<?php error_reporting(E_ALL); function sl($locale, $str) { $arEncode = array('', 'UCS-4','UCS-4BE','UCS-4LE','UCS-2','UCS-2BE','UCS-2LE','UTF-32','UTF-32BE','UTF-32LE','UTF-16','UTF-16BE','UTF-16LE','UTF-7','UTF7-IMAP','UTF-8','ASCII','EUC-JP','SJIS','eucJP-win','SJIS-win','ISO-2022-JP','ISO-2022-JP-MS','CP932','CP51932','SJIS-mac','JIS','JIS-ms','CP50220','CP50220raw','CP50221','CP50222','ISO-8859-1','ISO-8859-2','ISO-8859-3','ISO-8859-4','ISO-8859-5','ISO-8859-6','ISO-8859-7','ISO-8859-8','ISO-8859-9','ISO-8859-10','ISO-8859-13','ISO-8859-14','ISO-8859-15','byte2be','byte2le','byte4be','byte4le','BASE64','HTML-ENTITIES','7bit','8bit','EUC-CN','CP936','GB18030','HZ','EUC-TW','CP950','BIG-5','EUC-KR','UHC','ISO-2022-KR','Windows-1251','Windows-1252','CP866','KOI8-R','ArmSCII-8'); foreach ($arEncode as $encode) { mb_internal_encoding($encode); ex($locale, $str); } } function ex($locale, $str) { if (setlocale(LC_ALL, $locale) === false) { error_log('Locale not found: ' . $locale) . PHP_EOL; return; } echo STRTOUPPER($str) . PHP_EOL; echo MB_STRTOUPPER($str) . PHP_EOL; echo STRCASECMP($str, STRTOUPPER($str)) . PHP_EOL; echo STRLEN($str) . PHP_EOL; echo MB_STRLEN($str) . PHP_EOL; echo SUBSTR($str, 10, 10) . PHP_EOL; echo STRIPOS($str, chr(0xE6)) . PHP_EOL; echo STRPOS($str, chr(0xE6)) . PHP_EOL; echo STR_REPLACE(chr(0xE6), '日本語', $str) . PHP_EOL; echo STR_IREPLACE(chr(0xE6), '日本語', $str) . PHP_EOL; echo UCFIRST($str) . PHP_EOL; } $str = null; for($i=0xC0; $i<=0xFF; $i++){ $str .= chr($i); if ($i == 0xDF) $str .= 'abc日本語'; } sl('C',$str); sl('POSIX',$str); sl('aa_DJ',$str); sl('aa_DJ.iso88591',$str); sl('aa_DJ.utf8',$str); sl('aa_ER',$str); sl('aa_ER.utf8',$str); /*文字数制限により省略(「locale -a」の結果全て)*/ sl('zh_TW.utf8',$str); sl('zu_ZA',$str); sl('zu_ZA.iso88591',$str); sl('zu_ZA.utf8',$str);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/13 22:55
2016/05/14 14:08
2016/05/16 14:37 編集
2016/05/17 12:29
2016/05/22 13:39