UTF-8 であることがわかっているファイル名に対してPHP のpathinfo()
関数を使用する場合、特殊文字の前に「通常の」文字がない限り、正しい値が返されません。
例:
pathinfo('aä.pdf')
戻り値:
Array
(
[dirname] => [the dir]
[basename] => aä.pdf
[extension] => pdf
[filename] => aä
)
これは問題ありませんが、次のようなpathinfo('äa.pdf')
結果が返されます。
Array
(
[dirname] => [the dir]
[basename] => a.pdf
[extension] => pdf
[filename] => a
)
これは私が期待していたものとはまったく違います。さらに悪いことに、次pathinfo('ä.pdf')
の結果が返されます。
Array
(
[dirname] => [the dir]
[basename] => .pdf
[extension] => pdf
[filename] =>
)
なぜこのようなことが起こるのでしょうか? これは私がテストしたすべてのアクセント付き文字に当てはまります。
ベストアンサー1
使用前のパス情報
setlocale(LC_ALL,'en_US.UTF-8');
pathinfo($OriginalName, PATHINFO_FILENAME);
pathinfo($OriginalName, PATHINFO_BASENAME);