在这段代码中,我无法匹配 validate() 函数中的正则表达式 帮我找出错误的地方
我在用户输入中输入了除字母以外的数据,例如 (john1246@##$##@+-
)
它在 validate() 函数中返回输入值 (john1246@##$##@+-
) 或 $data,但未显示应返回 PRG_MTH_ERR
的错误。我的代码有什么问题?
验证.php
function validate($data, $reg_exp = "") {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if (empty($data) == true) {
return "EMT_FLD";
} elseif ($data != preg_match($reg_exp,$data)) {
return "PRG_MTH_ERR";
} else {
return $data;
}
}
登录.php
if (isset($_POST['login'])) {
include "./database/db.php";
$db = new db();
include 'validate.php';
echo validate($_POST['user'],"/^['a-zA-z']$/");
}
我预计它会返回 PRG_MTH_ERR
但它会返回 $data
最佳答案
松散比较是你的问题:
elseif ($data != preg_match($reg_exp,$data)) {
因为 "john1246@##$##@+-"== 0
为真。
您可以将 1 与 preg_match 的结果进行比较(请参阅 the doc 以了解有关 preg_match 的更多信息)
关于php - validate() 函数中的 php 表单验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162829/