Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除空格和任何非字母数字的内容_Php_Regex_Alphanumeric - Fatal编程技术网

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);