我想知道,如果 preg_match() 可以用作 PHP 的唯一防线。
测试 preg_match(),至少对于一个简单的输入表单字段,它只接受正则表达式可接受的内容,并为其他所有内容返回 false:
对于数字:
function GetUserID($userid) {
$regexnum = "/^[0-9]+$/";
if(preg_match($regexnum, $userid) != 1 OR empty($userid)) {
return false;
}
else {
return $userid;
}
}
对于名称:
function GetUsername ($user) {
$regex = "/^[a-zA-Zà-ûÀ-ÛçÇ\s]+$/";
if (preg_match($regex, $user) != 1 OR empty($user)) {
return false;
}
else {
return $user;
}
}
所以我的问题是,preg_match() 是否可以成为不使用 htmlentities() 或 filter_var() 的唯一防线,因为它不接受任何其他内容,或者我错过了什么?
* 编辑 * 我创建了这段代码来测试它: 测试站点