preg_match表单字段验证错误,如果字符串中的“&”

问题描述 投票:0回答:1

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

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中有“&”,我会收到错误消息。我曾尝试使用“\&”并更改订单但无济于事。

php validation preg-match
1个回答
0
投票

作为mentionedhtmlspecialchars将用&取代&,它的html表示。反过来,分号字符使/^[a-zA-Z0-9 &'-]*$/正则表达式失败。

你不是很清楚你想要实现什么,但是如果你试图用sql在数据库中插入值,使用PDO和参数化查询来防止sql注入,而不是半生不熟的清理函数,最终不能防止sql注射。

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

© www.soinside.com 2019 - 2024. All rights reserved.