我对正则表达式很新,而且他们让我头疼。他们太吓人了!对于我正在进行的电子邮件广告系列,用户将点击电子邮件中的链接,并为其填写一些网址参数,以便更轻松地填写表单。我想防止任何注入黑客或任何它被调用,但需要允许$ _GET参数是字母数字,标点符号,并有空格。如果某人有一个很好的方法,我会很感激,但现在我有:
foreach($_GET as $m=>$n) {
$get[$m] = preg_replace('(^[a-z0-9 \-\_\.]+)i',' ',$n);
}
我希望能够替换这个正则表达式中找不到的所有字符,我相信我使用?!
,但我也无法使用它。任何有助于此工作的帮助将不胜感激!
答案 0 :(得分:1)
^
字符在方括号内。所以你的代码应该是:
$get[$m] = preg_replace('([^a-z0-9 \-\_\.]+)i',' ',$n);
答案 1 :(得分:1)
您缺少分隔符,并且您应该将+
放在结尾括号]
foreach($_GET as $m=>$n) {
$get[$m] = preg_replace("/[^a-zA-Z0-9 \-\_\.]+/"," ",$n);
}
或者:
foreach($_GET as $m=>$n) {
$get[$m] = preg_replace("#[^a-zA-Z0-9 \-\_\.]+#"," ",$n);
}