webdav サーバーで動作する PHP スクリプトがあります。フォルダの内容をロードするには、PROPFIND
webdav リクエストを使用します。XML を返します。XML からフォルダー/ファイル リストを抽出し、すべてのアイテムについて名前を取得する必要があります。これを行うには、href オプションを取得し、urldecode を実行してから basename を実行します。
これは、1 つのケースを除いて正常に機能します。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サーバーがシンボルをエンコードしない標準的なものかどうか知っていますか? または、これはサーバー ソフトウェアに依存しますか? そのような問題を解決する最も正しい方法は何ですか? ありがとう。