preg_match表单字段验证错误,如果"&"在字符串中

时间:2018-03-03 16:49:17

标签: php validation preg-match

我正在尝试验证表单字段。

if (empty($_POST["title"])) {
    $titleErr = "A title is required";
} else {
    $title = test_input($_POST["title"]);
    if (!preg_match("/^[a-zA-Z0-9 &'-]*$/",$title)) {
        $titleErr = "Only letters numbers spaces &'- allowed";
    }
}
function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
return $data;
}

如果有"&"我会收到错误在$ title中。我尝试过使用" \&"并改变顺序,但无济于事。

1 个答案:

答案 0 :(得分:0)

作为mentionedhtmlspecialchars&替换为&,即其html表示形式。反过来,分号字符使/^[a-zA-Z0-9 &'-]*$/正则表达式失败。

目前还不太清楚你想要实现的目标,但是如果你试图用sql在数据库中插入值,请使用PDO和参数化查询来防止sql注入,而不是-baked sanitization函数最终不能防止sql注入。

在任何情况下,您都可以删除该test_input函数,它既不会服务也不会达到任何目的。