在WebDAV协议的href中加上“+”符号

时间:2013-05-23 09:15:50

标签: php webdav

我有一个PHP脚本可以使用webdav服务器。要加载文件夹内容,我使用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服务器不编码+符号是否标准?或者这取决于服务器软件? 解决此类问题最正确的方法是什么? 感谢。

1 个答案:

答案 0 :(得分:3)

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