phpのバグ dirname関数は日本語対応未熟(php 5.3)
カテゴリー: ぷろぐらみんぐ/メモ
2010-11-29
phpのバグ dirname関数は日本語対応未熟(php 5.3)
php6は、正常に動作しましたが
現行のバージョンは以下のコードでエラーが起きます
UTF8の文字に対してdirnameは、問題ないですが
現状 utf8でファイル名を取得できるのか?
// bug: php 5.3.3 , 5.2.14
// (php6:ok)
mb_language("ja");
mb_internal_encoding("SJIS");
$path = "c:\\tmp\\".chr(0x83).chr(0x8b); // japanese common charset (katakana ru)
$file = $path."\\test.txt"; // c:\tmp\ル\test.txt
printf(" \$file : %s\n" , $file);
printf(" dirname(\$file) : %s\n\n" , dirname($file));
if ( strcasecmp($path , dirname($file)) != 0 ) exit(" error : bug\n");
print "ok \n";
?>
出力結果
$file : c:\tmp\ル\test.txt
dirname($file) : c:\tmp
error : bug
本来あるべき値 c:\tmp\ル
php6は、正常に動作しましたが
現行のバージョンは以下のコードでエラーが起きます
UTF8の文字に対してdirnameは、問題ないですが
現状 utf8でファイル名を取得できるのか?
// bug: php 5.3.3 , 5.2.14
// (php6:ok)
mb_language("ja");
mb_internal_encoding("SJIS");
$path = "c:\\tmp\\".chr(0x83).chr(0x8b); // japanese common charset (katakana ru)
$file = $path."\\test.txt"; // c:\tmp\ル\test.txt
printf(" \$file : %s\n" , $file);
printf(" dirname(\$file) : %s\n\n" , dirname($file));
if ( strcasecmp($path , dirname($file)) != 0 ) exit(" error : bug\n");
print "ok \n";
?>
出力結果
$file : c:\tmp\ル\test.txt
dirname($file) : c:\tmp
error : bug
本来あるべき値 c:\tmp\ル