我尝试使用preg_replace方法替换匹配的正则表达式,但我收到错误消息
“警告:preg_replace():找不到结尾分隔符'_'”
$oldString = "";
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString);
这里我试图删除除字母,数字和下划线以外的所有字符。
答案 0 :(得分:1)
我认为php在你的尾随/后不喜欢控件g char。我也一直遇到麻烦,取消g似乎有所帮助。 preg_replace具有可选的参数,它在您希望增加的字符串之后,您可以控制您希望限制搜索的次数,默认情况下它是全局的。
The manual表示您将使用第4个参数(限制)设置限制,如果您愿意,可以传入计数参数5,这将为您提供找到匹配的次数。
对于我的钱来说,这只是另一件事,PHP做得好1/2,所有这些都加起来它只是一个完美的1/2 assed语言。但那既不在这里也不在那里:)
哦,欢迎来到Stack! :)
答案 1 :(得分:1)
PHP不支持g
,删除g
修饰符(全局)会这样做。
这是list of supported modifier
答案 2 :(得分:0)
首先,g
没有修饰符preg_replace
。
$oldString = "";
$newString = preg_replace("/[^a-z0-9_]*/i", "", $oldString);
其次,尝试在字符类之后加上一个乘数,以便替换多于1个字符。
答案 3 :(得分:0)
在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"