我在上传后使用Laravel上传了一个zip文件夹,我正在使用 zip存档 提取了这个zip文件夹,但一切正常,但是我的文件名存在问题文件夹,提取的文件夹可能包含许多文件,这些文件名带有特殊字符,例如“æÆØ”,我想从文件名中删除它们。
我使用过preg_replace,但是无法重命名文件。
preg_replace('/[ÆØæøÅå]/', '',path/K01_H3_N01 - Længdesnit A-A.pdf);
我只想从文件名中删除这些字符。预先感谢。
答案 0 :(得分:0)
您可以使用存储将文件保存到您喜欢的磁盘(S3,本地,...)
使用Storage::put('file.jpg', $uploaded_file);
,您可以简单地使用新文件名存储它。
更新: 如this答案所示,您可以执行以下操作:
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
然后像这样使用它:
echo clean('a|"bc!@£de^&$f g');
答案 1 :(得分:0)
您可以使用glob
函数来获取所有提取路径的列表路径,并循环循环该列表,并通过替换所有特殊字符来重命名每个文件
$filesPaths = glob(dirname(__FILE__) . '/[ÆØæøÅå]/');
// This will return an array with old all list of files which pathname matches the given patern
之后,您可以循环和重命名文件
foreach($filesPaths as $path){
// Get the last part of the path which is the name of the file
$old_name = basename($path);
// replace old special char by empty string
$new_path= preg_replace('/[ÆØæøÅå]/', '', $path);
// Generate a path by replacing the old file name in the path
rename($path, str_replace($old_name, basename($newPath), $new_path);
}