2013-05-23 2 views
0

webdav 서버와 작동하는 PHP 스크립트가 있습니다. 폴더 내용을로드하려면 PROPFIND webdav 요청을 사용합니다. 그것은 XML을 반환합니다. XML에서 폴더/파일 목록을 추출하고 모든 항목에 대해 이름을 가져와야합니다. 이 옵션을 사용하려면 href 옵션을 얻은 다음 urldecode를 수행 한 다음 basename을 수행하십시오.WebDAV 프로토콜에서 href의 플러스 "+"기호

이 경우는 하나의 경우를 제외하고는 정상적으로 작동합니다. 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 서버가 + 심볼을 인코딩하지 않는 것이 표준적인 것이면 알고 계십니까? 아니면 이것은 서버 소프트웨어에 달려 있습니까? 이러한 문제를 해결하는 가장 올바른 방법은 무엇입니까? 감사합니다. .

답변

3

"+"는 URI의 쿼리 부분에서만 특수합니다. 인코딩 할 필요가 없으므로 서버가 올바르게 작동합니다.