我正在尝试删除不是字母数字的所有内容,或者是带有 _ 的空格:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
我在这里做错了什么,它似乎不起作用。我尝试了几种正则表达式组合......(而且我通常不是很聪明)。
我正在尝试删除不是字母数字的所有内容,或者是带有 _ 的空格:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
我在这里做错了什么,它似乎不起作用。我尝试了几种正则表达式组合......(而且我通常不是很聪明)。
试试这个:
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
$filename = preg_replace('~[\W\s]~', '_', $filename);
如果我正确理解您的问题,您想用“_”替换任何空格 (\s) 或非字母数字 (\W) 字符。这应该没问题。注意 \W 是大写的,而不是小写的 \w 将匹配字母数字字符。
对我有用的解决方案是:
$filename = preg_replace('/\W+/', '_', $filename);
+
匹配一个或多个出现的空白块,\W
包括空格和所有非字母数字字符
尝试
$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);