0

我只想允许[^a-zA-Z@_.0-9\']接受更多功能,所以我这样做了。它工作正常,但是当我尝试运行插入时anything.php

它开始查找文件名并以错误结束。我已经逃脱了不需要的字符,但它仍然给出错误!

我无法转义点 (.),因为很多用户都在使用它

   $clean = htmlspecialchars(escapeshellcmd(($_GET["name"]),ENT_QUOTES);

    if ( !preg_match( '/[^a-zA-Z@_.0-9\']/', $clean))
     { 
     if(empty($clean)){

    echo "";

    }else{

//function

    }
}
4

1 回答 1

0

您只是在询问字符串中的任何位置是否包含这些字符之一。您要问的是,字符串是否完全由这些字符组成。您需要锚定正则表达式的两端,并添加一个量词:

/^[^a-zA-Z@_.0-9\']*$/

^匹配 lin 的开头,匹配$行的结尾,并且*表示“0 或更多”。

于 2013-10-05T02:05:12.007 回答