PHPでpathinfo関数やbasename関数を使用して、全角を含むファイル名を取得しようとすると失敗する事がある
[ 2011.03.11 ] by h_takimoto | Categories:PHP, 技術情報
結論
PHP4、PHP5で、全角ファイル名を含むパスに対して
pathinfo関数やbasename関数でファイル名を取得しようとすると失敗する事がある。
※ファイル名の先頭がマルチバイト文字の場合に失敗する。
※文字コードの種類によらない
※OSの種類によらない
これはPHP4、PHP5の仕様なので、別の手段で対応しよう。
PHP :: Bug #37738 :: basename does not work with Japanese
代替案
// 正常な例
$path = 'http://www.example.com/otakara.jpg';
echo basename($path);
$pathinfo = pathinfo($path);
echo $pathinfo['basename'];
// 失敗例
$path = 'http://www.example.com/大変貴重な画像.jpg';
echo basename($path);
$pathinfo = pathinfo($path);
echo $pathinfo['basename'];
// 代替案の一例
echo end(explode('/', $path));
echo end(explode('/', $path));
////
// OUTPUT
//
// otakara.jpg
// otakara.jpg
// .jpg
// .jpg
// 大変貴重な画像.jpg
// 大変貴重な画像.jpg
滝本














最近のコメント