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

5

我正在制作一个SWF上传器,并且已经完成了HTML表单。

它的工作非常好,直到我上传一个文件名中带有空格的SWF文件。

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

我已经尝试过...

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

...and...

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

2
您不需要在问题标题中加入[PHP] - drudge
3个回答

14

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

字符类\s可以匹配空白字符。我已添加量词+来将多个空格折叠成一个_。如果您不想要这个效果,请删除+

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

7

这个函数是正确的,但你需要将其赋值给一个变量。

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

我知道。但是我只是复制了你发布的内容。我以为你会知道如何处理它 :) - ave4496
我想这样做,但不确定 OP 的意思 :D - alex

4

我通常从另一个方面来处理,只允许白名单中的字符通过;我会替换除这些字符以外的所有内容:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接