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