【问题标题】:PHP dirname() drops entire pathPHP dirname() 删除整个路径
【发布时间】:2013-06-14 19:22:07
【问题描述】:

我有一个变量 $path,其中包含 Windows 网络上文件的完整路径(例如 R:\somedir\otherdir\lastdir\some.file.ext

当我使用时:

    $location = dirname($path);

这里$location只记录值.

我做错了什么?

【问题讨论】:

  • 来自手册:Since PHP 4.3.0, you will often get a slash or a dot back from dirname() in situations where the older functionality would have given you the empty string. 我建议在这里阅读注释:php.net/manual/en/function.dirname.php
  • 感谢我已阅读此条目,$path 包含斜杠,所以我不确定发生了什么。
  • 它包含反斜杠,而不是斜杠
  • 好的,我已经使用以下代码解决了这个问题: $path = str_replace("\\", "/", $path); $location = 目录名($path);感谢您的帮助。

标签: php path directory dirname


【解决方案1】:

考虑使用正斜杠“/”。

【讨论】:

  • 谢谢,虽然我试过了,但它并没有从末尾删除文件名。
  • 他正在使用反斜杠 - 那是一个斜杠(\ 是一个黑斜杠)
  • 有没有办法将字符串中的斜杠改为反斜杠?该字符串由 HTML 表单中的 标记生成。
【解决方案2】:

您使用了错误的斜线。 不要使用反斜杠\,而是使用普通斜杠/

文件路径和 URI 是不同的。 \ 在 Windows 文件中是正确的 URI 中的路径和 / 是正确的。

所以这个文件路径:C:\Documents\Foo 转换为这个 URI: file:///C:/Documents/Foo

来自 php 文档:

如果路径中没有斜杠,则返回一个点('.'),表示 当前目录。否则,返回的字符串是任何路径 尾随 /component 已删除。

这意味着问题在于你的斜线是错误的。

http://php.net/manual/en/function.dirname.php

【讨论】:

    【解决方案3】:

    \ 替换为/ 并重试

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 2019-07-14
      • 2012-07-17
      • 2015-03-13
      • 2011-07-19
      • 2014-03-28
      相关资源
      最近更新 更多