删除空格和任何非字母数字的内容

时间:2010-11-17 23:52:43

标签: php regex alphanumeric

我正在尝试删除所有不是字母数字的内容,或者是一个带_的空格:

$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);

我在这里做错了什么,似乎没有用。我已经尝试了几种正则表达式组合......(而且我通常不是很聪明)。

4 个答案:

答案 0 :(得分:11)

试试这个:

$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);

答案 1 :(得分:7)

$filename = preg_replace('~[\W\s]~', '_', $filename);

如果我理解你的问题,你想用'_'替换任何空格(\ s)或非字母数字(\ W)字符。这应该没问题。注意\ W是大写的,而不是小写的\ w,它将匹配字母数字字符。

答案 2 :(得分:2)

对我有用的解决方案是:

$filename = preg_replace('/\W+/', '_', $filename);

+匹配\W个空格的一个或多个出现的块,其中包含空格和所有非字母数字字符

答案 3 :(得分:0)

尝试

$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);