允许使用字母数字,标点符号和空格

时间:2010-05-28 16:43:48

标签: regex

我对正则表达式很新,而且他们让我头疼。他们太吓人了!对于我正在进行的电子邮件广告系列,用户将点击电子邮件中的链接,并为其填写一些网址参数,以便更轻松地填写表单。我想防止任何注入黑客或任何它被调用,但需要允许$ _GET参数是字母数字,标点符号,并有空格。如果某人有一个很好的方法,我会很感激,但现在我有:

foreach($_GET as $m=>$n) {
    $get[$m] = preg_replace('(^[a-z0-9 \-\_\.]+)i',' ',$n);
}

我希望能够替换这个正则表达式中找不到的所有字符,我相信我使用?!,但我也无法使用它。任何有助于此工作的帮助将不胜感激!

2 个答案:

答案 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);
}