سؤال

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.

هل كانت مفيدة؟

المحلول

A "+" is only special in the query part of a URI. It does not need to be encoded, thus the server behaves correctly.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top