我想只允许[^a-zA-Z@_.0-9\']
接受更多功能,所以我这样做了。它工作正常,但当我试图插入anything.php
它开始找到文件名并以错误结束。我已经逃脱了不需要的char,但它仍然是错误的!
我无法逃避点(。)因为许多用户正在使用它
$clean = htmlspecialchars(escapeshellcmd(($_GET["name"]),ENT_QUOTES);
if ( !preg_match( '/[^a-zA-Z@_.0-9\']/', $clean))
{
if(empty($clean)){
echo "";
}else{
//function
}
}
答案 0 :(得分:0)
您只是询问字符串是否包含其中任何一个字符。您的意思是,字符串完全由仅这些字符组成。你需要锚定正则表达式的两端,并添加一个量词:
/^[^a-zA-Z@_.0-9\']*$/
^
匹配lin的开头,$
匹配行的结尾,*
表示“0或更多”。