PHP的htmlspeciachars没有使用单引号

时间:2014-07-19 06:16:24

标签: php htmlspecialchars

我正在尝试将单引号转换为用于数据库插入的相关HTML代码,但它似乎不起作用。当我创建以下脚本时:

<?php
 $str = "& and ' and \" and < and >";
 echo htmlspecialchars($str);
?>

我的浏览器返回以下内容:

&amp; and ' and &quot; and &lt; and &gt;

我做错了什么?我已经阅读了关于htmlspecialchars()函数的PHP手册,它说它适用于单引号,但它似乎对我没用。

1 个答案:

答案 0 :(得分:1)

htmlentities()与标记ENT_QUOTES一起使用。来自manual

  

ENT_QUOTES将转换双引号和单引号。

htmlentities($text, ENT_QUOTES);

如果您只想将'替换为&#39;,您当然可以使用str_replace()

str_replace("'", "&#39;", $text);

但是,因为要将数据插入到SQL代码中,请查看prepared statements in PDO or MySQLi。这些功能可以满足您所需的确切目的(从我可以看出),并且比您自己的功能更好。毕竟,为什么重新发明轮子?

仅供记录,请确保不要在PHP中使用已弃用的MySQL函数 - 如_Why shouldn't I use mysql__* functions in PHP?中所述。