1

webdav サーバーで動作する PHP スクリプトがあります。フォルダの内容をロードするには、PROPFINDwebdav リクエストを使用します。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サーバーがシンボルをエンコードしない標準的なものかどうか知っていますか? または、これはサーバー ソフトウェアに依存しますか? そのような問題を解決する最も正しい方法は何ですか? ありがとう。

4

1 に答える 1