I have a PHP script to work with webdav server. To load a folder contents I use PROPFIND
webdav request. It returns XML. From the XML I extract folders/files list and for every item I need to get name. To have this I get href option, then do urldecode and then basename.
This works fine except one case. If a folder/file on the webdav server has +
in the name then this plus is not encoded in the href option. And urldecode decodes it as space. So finally I get a folder with space in place of plus.
For example, on the webdav server I have the folder "folder with space and+"
.
Href will be "/folder%20with%20space%20and+/"
. And after urldecode it will be "folder with space and "
.
I can fix this with str_replace('+','%2B',$href)
before urldecode. But my script works with many webdav servers. And i am not sure all webdav servers works with same way.
Do you know if this is standard thing that webdav servers don't encode +
symbol? Or this depends on the server software ?
What is most correct way to solve such problem?
Thanks.