我正在尝试验证表单字段。
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中有“&”,我会收到错误消息。我曾尝试使用“\&”并更改订单但无济于事。
作为mentioned,htmlspecialchars将用&
取代&
,它的html表示。反过来,分号字符使/^[a-zA-Z0-9 &'-]*$/
正则表达式失败。
你不是很清楚你想要实现什么,但是如果你试图用sql在数据库中插入值,使用PDO和参数化查询来防止sql注入,而不是半生不熟的清理函数,最终不能防止sql注射。
在任何情况下,您都可以删除该test_input函数,它既不服务也不实现任何目的。