当对已知为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] =>
)

为什么这样做呢?这适用于我测试过的所有重音字符。

最佳答案

使用前pathinfo

setlocale(LC_ALL,'en_US.UTF-8');
pathinfo($OriginalName, PATHINFO_FILENAME);
pathinfo($OriginalName, PATHINFO_BASENAME);

关于php - 如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4451664/

10-10 05:16