首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在上传后删除文件名中的特殊字符

如何在上传后删除文件名中的特殊字符
EN

Stack Overflow用户
提问于 2019-03-20 14:42:15
回答 2查看 2.4K关注 0票数 1

我正在上传一个压缩文件夹使用Laravel上传后,我正在解压这个压缩文件夹使用的压缩档案一切工作完美,但我有一个问题的文件名在这个文件夹中,解压的文件夹可能包含许多文件这些文件名有特殊的字符,如“??”,我想从文件名中删除。

我使用了preg_replace,但无法重命名该文件。

代码语言:javascript
复制
preg_replace('/[ÆØæøÅå]/', '',path/K01_H3_N01 - Længdesnit A-A.pdf);

我只想从文件名中删除这些字符。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-03-20 14:50:57

您可以使用存储将文件保存到您喜欢的磁盘(S3、本地...)使用Storage::put('file.jpg', $uploaded_file);,您可以简单地将其存储为新的文件名。

更新:如this SO Answer中所示,您可以执行以下操作:

代码语言:javascript
复制
function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.

   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}

然后像这样使用它:

代码语言:javascript
复制
echo clean('a|"bc!@£de^&$f g');
票数 1
EN

Stack Overflow用户

发布于 2019-03-20 21:59:27

您可以使用glob函数来获取提取的所有路径的列表路径,并循环该列表,并通过替换所有特殊字符来重命名每个文件

代码语言:javascript
复制
$filesPaths = glob(dirname(__FILE__) . '/[ÆØæøÅå]/'); 
// This will return an array with old all list of files which pathname matches the given patern

之后,您可以循环和重命名文件

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55254890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档