我不知道这是否是一种很好的编码习惯,但是我试图在需要接受单引号和双引号有效的用户输入字段上使用htmlspecialchars()。输入将存储在数据库中。
尽管指定了ENT_NOQUOTES,但引号仍在编码中。
使用简单的字符串,该函数可以正常工作。
$string = htmlspecialchars("10'", ENT_NOQUOTES);
echo ($string) outputs expected 10' or 10"
但是如果我使用
$input = htmlspecialchars($_POST['input'], ENT_NOQUOTES);
和$ input ==“ 10'”
$ input输出10' (等同于html实体的引号)
我尝试将$ _POST ['input']保存到变量,然后在该变量上使用该函数。
$i = $_POST['input'];
$input = htmlspecialchars($i, ENT_NOQUOTES);
相同的交易。
我正在使用ajax并将输出的页面编码为json以显示结果。我想知道这是否与它有关。
谢谢。