我正在尝试将单引号转换为用于数据库插入的相关HTML代码,但它似乎不起作用。当我创建以下脚本时:
<?php
$str = "& and ' and \" and < and >";
echo htmlspecialchars($str);
?>
我的浏览器返回以下内容:
& and ' and " and < and >
我做错了什么?我已经阅读了关于htmlspecialchars()函数的PHP手册,它说它适用于单引号,但它似乎对我没用。
答案 0 :(得分:1)
将htmlentities()
与标记ENT_QUOTES
一起使用。来自manual:
ENT_QUOTES将转换双引号和单引号。
htmlentities($text, ENT_QUOTES);
如果您只想将'
替换为'
,您当然可以使用str_replace()
:
str_replace("'", "'", $text);
但是,因为要将数据插入到SQL代码中,请查看prepared statements in PDO or MySQLi。这些功能可以满足您所需的确切目的(从我可以看出),并且比您自己的功能更好。毕竟,为什么重新发明轮子?
仅供记录,请确保不要在PHP中使用已弃用的MySQL函数 - 如_Why shouldn't I use mysql__* functions in PHP?中所述。