PHP的文件路径成分函数返回不正确的结果

问题描述:

可以使用数组符号得到一个完整的文件路径的部分,如PHP的文件路径成分函数返回不正确的结果

echo $path_parts['dirname'], "\n"; 
echo $path_parts['basename'], "\n"; 
echo $path_parts['extension'], "\n"; 
echo $path_parts['filename'], "\n"; // since PHP 5.2.0 

但是,除了“基本名”被命名错误(因为它返回整个文件名) ,'basename'和'filename'版本只返回文件名的第一个字符。如果文件名是Archive.zip,我做到以下几点:

echo "Here's the zip filename: " . $zipFilename . "<br>"; 
echo "Here's the basename: " . $zipFilename['basename'] . "<br>"; 
echo "Here's the 'filename': " . $zipFilename['filename']; 

我得到:

Here's the zip filename: Archive.zip 
Here's the basename: A 
Here's the 'filename': A 

如果我尝试它的完整路径,上传/上Archive.zip,我得到:

Here's the zip filename: uploads/Archive.zip 
Here's the basename: u 
Here's the 'filename': u 

任何想法为什么?谢谢。

+0

顺便提一下,这个文件是通过POST/GET上传的?这里有什么情况? – 2013-05-08 06:18:41

+0

如何将值/文件设置为$ zipFilename? – 2013-05-08 06:40:18

+0

是的,它用于上传的文件。 $ zipFilename来自POST(用户选择的文件的名称),但是如果我对它进行硬编码,会发生同样的情况。尽管感谢您的评论,请参阅下面的答案。 – Oscar 2013-05-08 06:42:07

原来这里有个缺失的步骤:调用pathinfo将路径字符串转换为数组。 Pramod的评论指出了这个问题,尽管它不是很正确:pathinfo不会创建一个FILE数组。它只是将一个字符串解析成一个数组。

谢谢!