加上 WebDAV 协议中 href 中的"+"符号



我有一个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服务器不编码+符号是标准的吗?或者这取决于服务器软件?解决这个问题最正确的方法是什么?谢谢。

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

相关内容

  • 没有找到相关文章

最新更新