我正在上传一个压缩文件夹使用Laravel上传后,我正在解压这个压缩文件夹使用的压缩档案一切工作完美,但我有一个问题的文件名在这个文件夹中,解压的文件夹可能包含许多文件这些文件名有特殊的字符,如“??”,我想从文件名中删除。
我使用了preg_replace,但无法重命名该文件。
preg_replace('/[ÆØæøÅå]/', '',path/K01_H3_N01 - Længdesnit A-A.pdf);
我只想从文件名中删除这些字符。提前谢谢。
发布于 2019-03-20 14:50:57
您可以使用存储将文件保存到您喜欢的磁盘(S3、本地...)使用Storage::put('file.jpg', $uploaded_file);
,您可以简单地将其存储为新的文件名。
更新:如this SO Answer中所示,您可以执行以下操作:
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');
发布于 2019-03-20 21:59:27
您可以使用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);
}
https://stackoverflow.com/questions/55254890
复制相似问题