如何替换上传文件的文件名中的空格

Posted

技术标签:

【中文标题】如何替换上传文件的文件名中的空格【英文标题】:How can I replace white space in filename of uploaded file 【发布时间】:2011-08-27 15:30:19 【问题描述】:

我正在制作一个 SWF 上传器并完成我的 html 表单。

在我上传名称中包含空格的 SWF 文件之前,它完全可以正常工作。

如何将空格替换为下划线?

我试过了……

str_replace(" ","_", $file);

...和...

preg_replace(" ","_", $file);

【问题讨论】:

您无需在问题标题中输入[php] 【参考方案1】:

如何将空格替换为下划线?

\s 字符类将匹配空白字符。我添加了+ 量词以将多个空格折叠到一个_。如果您不想这样,请删除 +

$file = preg_replace('/\s+/', '_', $file);

【讨论】:

【参考方案2】:

函数是正确的,但你必须将它分配给一个变量。

$filename = str_replace/preg_replace(" ","_", $file);

【讨论】:

我知道。但我只是复制了你发布的内容。我以为你会知道如何处理它:) 我愿意,但不确定 OP :D【参考方案3】:

我通常从另一边接近它,只允许来自白名单的字符;我替换除了这些字符之外的所有内容:

$file = preg_replace("/[^-_a-z0-9]+/i", "_", $file);

【讨论】:

@alex 是的,但我认为这更能说明我的意思。 你是对的,如果 OP 的正则表达式经验有限,那么明确地看到这些字符可能会帮助他们理解它。 @alex 因为我懒得像你一样写解释:)

以上是关于如何替换上传文件的文件名中的空格的主要内容,如果未能解决你的问题,请参考以下文章

上传CSV文件如何删除多余的空格[重复]

文件上传漏&洞 — ::$DATA绕过点和空格绕过

替换 Amazon S3 中上传文件的字节

基于ThinkPHP解决了前端以base64形式传文件实现文件上传的函数封装

svn怎么上传文件

使用 fs 在 multer 中重命名上传的图像