我有一个与 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 "
.
str_replace('+','%2B',$href)
我可以在 urldecode 之前解决这个问题。但我的脚本适用于许多 webdav 服务器。而且我不确定所有 webdav 服务器都以相同的方式工作。
你知道这是否是 webdav 服务器不编码+
符号的标准事情吗?或者这取决于服务器软件?解决此类问题的最正确方法是什么?谢谢。