Php 删除空格和任何非字母数字的内容
我正在尝试删除所有不是字母数字的内容,或者是带有以下内容的空格:Php 删除空格和任何非字母数字的内容,php,regex,alphanumeric,Php,Regex,Alphanumeric,我正在尝试删除所有不是字母数字的内容,或者是带有以下内容的空格: $filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename); 我做错了什么,它似乎不起作用。我尝试了几种正则表达式组合…(我通常不是很聪明)。试试这个: $filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename); 试一试 如果我正确理解您的问题,您希望将任何空格(\s)或非字母数字(\W)字符替换为“
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
我做错了什么,它似乎不起作用。我尝试了几种正则表达式组合…(我通常不是很聪明)。试试这个:
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
试一试
如果我正确理解您的问题,您希望将任何空格(\s)或非字母数字(\W)字符替换为“\ux”。这应该可以。注意\W是大写的,而不是与字母数字字符相匹配的小写的\W。适合我的解决方案是:
$filename = preg_replace('/\W+/', '_', $filename);
+
匹配一个或多个出现的\W
空白块,其中包括空格和所有非字母数字字符我有点困惑——你想用“uu”替换空格还是不?嗯,有一件事你已经设法忽略了很多字符:unichars-a'[\p{Alpha}\p{Number}''[^a-zA-Z0-9]“|wc-lˋ==14717
。这不是一个好的开始。你应该把\s
放在方括号内。否则^\s
只匹配主题开头的空格。也可以使用/..//code>来括起来,圆括号只用于捕获。是的,我想替换空格和所有不属于alp的内容带下划线的数字
是任何一个非字母数字字符。我建议您考虑一下您忘记的其他近15000个字符。哇。嗯,比如\s
在字符类之外做了什么?那么您忘记的数千个字母数字呢?\W
的含义各不相同,但在PHP中它匹配任何非ASCII单词字符的字符,即[A-Za-z0-9.
。其中包括ASCII空白字符(因此\s
是多余的)和来自其他脚本的字母数字字符。即使是重音拉丁字母也被\W
视为非单词字符。
$filename = preg_replace('~[\W\s]~', '_', $filename);
$filename = preg_replace('/\W+/', '_', $filename);