Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 Negation - Fatal编程技术网

Php替换与正则表达式匹配的字符

Php替换与正则表达式匹配的字符,php,regex-negation,Php,Regex Negation,我尝试使用preg_replace方法替换匹配的正则表达式,但收到错误消息 “警告:preg_replace():找不到结尾分隔符”“\u” 在这里,我试图删除除字母、数字和下划线以外的所有字符。我认为php不喜欢尾随/后的控件g char。我在这方面也遇到了麻烦,移除g似乎有帮助。preg_replace在您希望增加的字符串后面有可选的参数,您可以控制希望限制搜索的次数,默认情况下它是全局的 表示您将使用第4个参数(limit)设置限制,如果您愿意,您可以传入count param 5th,这

我尝试使用preg_replace方法替换匹配的正则表达式,但收到错误消息

“警告:preg_replace():找不到结尾分隔符”“\u”


在这里,我试图删除除字母、数字和下划线以外的所有字符。

我认为php不喜欢尾随/后的控件g char。我在这方面也遇到了麻烦,移除g似乎有帮助。preg_replace在您希望增加的字符串后面有可选的参数,您可以控制希望限制搜索的次数,默认情况下它是全局的

表示您将使用第4个参数(limit)设置限制,如果您愿意,您可以传入count param 5th,这将为您提供找到匹配项的次数

就我而言,这只是PHP做了1/2正确的另一件事,这一切加起来就是一种完美的1/2汇编语言。但这不是这里也不是那里:)


哦,欢迎来到Stack!:)

PHP不支持
g
,删除
g
修饰符(全局)即可。

这里是

首先,
preg\u replace
没有修饰符
g

$oldString = "";
$newString = preg_replace("/[^a-z0-9_]*/i", "", $oldString);

其次,尝试在字符类后放置一个乘数,以替换多于1个字符。

在RegEx
\W
中表示任何非字母数字下划线字符。请记住,这也将取代空格

$oldString = "This, is not _all_ alpha-numeric";
$newString = preg_replace("/\W+/", "", $oldString);
# Gives "Thisisnot_all_alphanumeric"

$newString = preg_replace("/[^\w ]+/", "", $oldString);
# Gives "This is not _all_ alphanumeric"

我认为问题在于
g
。无论哪种方式,带不敏感标志的
[^a-z0-9\]
与不带不敏感标志的
[^a-Za-z0-9\]
相同。
$oldString = "This, is not _all_ alpha-numeric";
$newString = preg_replace("/\W+/", "", $oldString);
# Gives "Thisisnot_all_alphanumeric"

$newString = preg_replace("/[^\w ]+/", "", $oldString);
# Gives "This is not _all_ alphanumeric"