空白、,
、(
、)
、!
などのような特殊文字を含む古いファイルをPHPで削除する必要があります。 Classic unlink($filename)
はこれらのファイルでは機能しません。どのように私はファイル名をunlink関数とファイルシステムを受け入れるファイル名に変換できますか?それはSolarisマシン上で実行されており、別のアクセス権は持っていません。ファイル名に特殊文字を含むファイルを削除する
3
A
答えて
2
どのように$filename
を構築していますか?あなたが通常のエスケープ処理を行う場合、unlinkは特殊文字を含むファイル名で動作するはずです。例えばthis has, various/wonky !characters in it
の名前を持つファイルの
、その後、
$filename = 'this has\, various\/wonky \!characters in it';
unlink($filename);
が動作するはずです。
0
Linuxでやる方法は、 "rm ./filename"のような絶対パスをドットスラッシュで使用することです。
エスケープ文字を使用することもできます。 "rm \ -filename"のように、 - バックスペースハイフンです。
1
unlinkは有効な文字列を受け入れ、その文字列のファイルを削除しようとします。
unlink('/home/user1/"hello(!,');
おそらく、特定の文字を正しくエスケープしていない可能性があります。
1
また、すべての必要なファイルを見つけて、RegexIterator使用してそれらのリンクを解除することができます(「」)このコードスニペットは、再帰的に現在のすべてのディレクトリをトラバース
<?php
$dir = new RecursiveDirectoryIterator('.');
$iterator = new RecursiveIteratorIterator($dir);
$regex = new RegexIterator($iterator, '/(^.*[\s\.\,\(\)\!]+.*)/', RecursiveRegexIterator::GET_MATCH);
foreach ($regex as $file) {
if (is_file($file[0])) {
print "Unlink file {$file[0]}\n";
unlink($file[0]);
}
}
をして/(^ 」正規表現ですべてのファイルと一致します。 [\ s \ ,.()!] +。)/ 'と入力して削除します。
関連する問題
- 1. Javaがファイル名に特殊文字を含むファイルを保存する
- 2. powershellのファイル名から特殊文字を削除する
- 3. Powershellファイル名から特殊文字を削除する
- 4. 名前に特殊文字を含む弾性インデックスを削除するには?
- 5. SQL Server:特殊文字を含むスキーマを削除する
- 6. 特殊文字を含む行を削除する方法は?
- 7. 特殊文字を含む要素を削除する
- 8. 名前に特殊文字を含むftpフォルダにファイルをアップロードする
- 9. 添付ファイル名に特殊文字を含むメールを暗号化する
- 10. パンダ:列に特殊文字を含むファイルを読み取る
- 11. Python 3.6.1 | Regex特殊文字を含むファイルを検索する
- 12. 特殊文字を含む.xlsxファイルをインポートする
- 13. VB Script - csvファイルから特殊文字を削除する
- 14. ディレクトリ内の特殊文字でファイルを削除する
- 15. 特殊文字を含むファイルの読み書きc
- 16. SSIS:特殊文字を含むCSVファイルのエクスポートとインポート
- 17. Lazarus ListBox SaveToFileファイル名に特殊文字
- 18. ngStyleは、ファイル名に特殊文字
- 19. ファイル名に '%'のような特殊文字を含むファイルをサブバージョンに追加する
- 20. Tumblrに特殊文字を含むメール
- 21. Pythonでファイルからスペースを除く特殊文字を削除するには?
- 22. コンソールから特殊文字を削除してtxtファイルをロード
- 23. NuGetパッケージに特殊文字を含むファイルが含まれています
- 24. Regex特殊文字を削除する
- 25. dplyrに特殊文字を含む名前を選択
- 26. 引数で文字列を含むファイルを削除する
- 27. ファイル名とパスの特殊文字
- 28. Omnisデータベースファイルに特殊文字を含むテーブル名
- 29. 特殊文字を含むxpath属性
- 30. PHP:特殊文字を含むパスワード
ファイル名はreaddirコマンドから出力されます。ディレクトリ内のファイルがidデータベースで使用されている場合と比較し、そうでない場合は削除します。私はこのファイル名をエスケープしません。自動エスケープする方法はありますか?私は、 "¼ľčš"のようなcp-1250文字があることを付け加える必要があります。 – gadelat
シェルメタキャラクタを含むファイル名を扱っている場合は、それらをエスケープする必要があります。 Unlinkはあなたがあなた自身でそれをエスケープしない限り、ファイル名の '/'が実際にファイル名の一部であり、ディレクトリ区切り文字ではないことを知りません。 –
cp-1250文字は問題ではないはずです。なぜなら、PHPやglibcが別のコードページ/文字セットで同時に動作していない限り、問題はありません。 "外国"の文字セット内のアクセント付き文字の1つが、 '/'のようなシェルメタキャラクタの1つに偶然にマップされる可能性はありますが、それでは正方形に戻ります。 –