【发布时间】:2013-05-23 09:15:49
【问题描述】:
我有一个与 webdav 服务器一起工作的 PHP 脚本。要加载文件夹内容,我使用 PROPFIND webdav 请求。它返回 XML。我从 XML 中提取文件夹/文件列表以及我需要获取名称的每个项目。为此,我获得了 href 选项,然后执行 urldecode,然后执行 basename。
除了一种情况外,这很好用。如果 webdav 服务器上的文件夹/文件的名称中有 +,那么这个加号不会在 href 选项中编码。并且 urldecode 将其解码为空间。所以最后我得到了一个带有空格代替加号的文件夹。
例如,在 webdav 服务器上,我有文件夹 "folder with space and+"。
Href 将是"/folder%20with%20space%20and+/"。在 urldecode 之后,它将是 "folder with space and "。
我可以在 urldecode 之前使用 str_replace('+','%2B',$href) 解决这个问题。但我的脚本适用于许多 webdav 服务器。而且我不确定所有 webdav 服务器都以相同的方式工作。
你知道这是否是 webdav 服务器不编码+ 符号的标准吗?或者这取决于服务器软件?
解决此类问题的最正确方法是什么?
谢谢。
【问题讨论】: