1

我有一个与 webdav 服务器一起工作的 PHP 脚本。要加载文件夹内容,我使用PROPFINDwebdav 请求。它返回 XML。从 XML 中,我提取文件夹/文件列表以及我需要获取名称的每个项目。为此,我获得了 href 选项,然后执行 urldecode,然后执行 basename。

除了一种情况外,这很好用。如果 webdav 服务器上的文件夹/文件的名称中包含+该名称,则该加号不会在 href 选项中编码。并且 urldecode 将其解码为空间。所以最后我得到一个用空格代替加号的文件夹。

例如,在 webdav 服务器上,我有文件夹"folder with space and+". Href 将是"/folder%20with%20space%20and+/". 在 urldecode 之后它将是"folder with space and ".

str_replace('+','%2B',$href)我可以在 urldecode 之前解决这个问题。但我的脚本适用于许多 webdav 服务器。而且我不确定所有 webdav 服务器都以相同的方式工作。

你知道这是否是 webdav 服务器不编码+符号的标准事情吗?或者这取决于服务器软件?解决此类问题的最正确方法是什么?谢谢。

4

1 回答 1

4

“+”仅在 URI 的查询部分中是特殊的。它不需要编码,因此服务器行为正确。

于 2013-05-23T11:07:43.917 回答