【问题标题】:PHP's file-path component functions return incorrect resultsPHP 的文件路径组件函数返回不正确的结果
【发布时间】:2013-05-08 06:12:59
【问题描述】:

您可以使用数组表示法获取完整文件路径的一部分,例如

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”被错误命名(因为它返回整个文件名)之外,“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

如果我在完整路径上尝试,uploads/Archive.zip,我会得到:

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

知道为什么吗?谢谢。

【问题讨论】:

  • 顺便说一下,您所指的这个文件是通过 POST/GET 上传的?这里的场景是什么?
  • 如何将值/文件设置为 $zipFilename?
  • 是的,它用于上传文件。 $zipFilename 来自 POST(用户选择的文件的名称),但是如果我对其进行硬编码,也会发生同样的事情。不过,感谢您的评论;请参阅下面的答案。

标签: php path filenames filepath


【解决方案1】:

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

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2016-05-28
    相关资源
    最近更新 更多