ディレクトリ区切り文字 (スラッシュ) を使用せずに、文字列を安全で有効なファイル名にサニタイズする PHP 関数を探しています。
理想的には、リバーシブルであるべきであり、必要以上に名前をごちゃ混ぜにすべきではありません。
もちろん、意図的なディレクトリ トラバーサル攻撃を防ぎたいと思っています。しかし、サブフォルダーが作成されないようにしたいです。
私はそれurlencode()
がうまくいくと考えましたが、これで十分かどうか、および/またはより良い、またはより人気のあるものがあるかどうか疑問に思います.
また、Windows でも同じように機能するもの (ディレクトリ セパレータとしてのバックスラッシュ) がある場合、そのソリューションは移植可能です。
ユースケース / シナリオ:
データ インポートの一環として、リモート URL からローカル ファイル システムにファイルをダウンロードしたいと考えています。URL は csv ファイルからのものです。それらのほとんどは問題ありませんが、予想よりも多くのスラッシュが含まれている可能性があります。
たとえば、それらのほとんどは次のようなものです。
https://files.example.com/pdf/12345.pdf
ただし、個々のファイルは次のようになります。
https://files.example.com/pdf/1/2345.pdf
ファイルはすべて同じディレクトリに配置する必要があります。例:
https://files.example.com/pdf/12345.pdf
->/destination/dir/12345.pdf
次のようなファイル1/2345.pdf
は、サブディレクトリにはなりません。代わりに、/
何らかの (可逆的な) 方法でエスケープする必要があります。たとえば、urlencode() の場合、これは1%2F2345.pdf
.