我将数据插入到包含一些基本html标签,双引号和单引号的表中。
我使用以下行来处理数据:
htmlentities(($_POST[content]), ENT_QUOTES);
问题在于,当我选择此数据将其重新显示在屏幕上时,显示实际的html标签而不是呈现html,即如果我使用<b>bold</b>
标签,则将其显示为文本而不是使该标签内的文字粗体。如果我不使用上述行,即
htmlentities(($_POST[content]), ENT_QUOTES);
然后我无法将数据插入数据库,因为数据可以包含单引号和双引号。
我该如何处理这个问题?
基本上,我应该能够将数据插入到数据库中,其中单引号或双引号不应该导致问题。当将数据渲染回屏幕时,它应该呈现html标签,因为它们应该被渲染到浏览器中,并且引号应该在被渲染回屏幕的文本中显示为引号。
答案 0 :(得分:3)
您正在将数据插入数据库,而不是插入HTML文档。不要使用htmlentities。使用数据库提供的任何方法来转义内容。这应该是使用绑定参数的东西。 Bobby-tables explains a number of different methods
答案 1 :(得分:2)
$html = mysql_real_escape_string($html);
http://php.net/manual/en/function.mysql-real-escape-string.php
在使用此功能之前,请确保已建立正确的mysql连接mysql_connect
。
答案 2 :(得分:0)
你必须使用strip_tags($str);
如果你想删除只有html标签..单引号或双引号将保持...
但是你的问题是......你在字符串上放了很多空格,这样你就可以完全使用use strip_tags($str);
答案 3 :(得分:-1)
将如此多的HTML代码放入mysql表中对我来说似乎是一个丑陋的方法,如果你要添加一个帖子就需要它,但是如果你要保存一个你可以重新填充的页面,你可以考虑另一种方式。
这是我的方法:
这使我保存了&lt; 1kb数据而不是125kb
如果您使用模板化系统,这是一个很好的方法。