我将数据插入包含一些基本html标记,双引号和单引号的表中。

我正在使用以下行来处理数据:

htmlentities(($_POST[content]), ENT_QUOTES);

问题是,当我选择此数据以将其重新显示在屏幕上时,将显示实际的html标签而不是呈现html,即,如果我使用bold标签,则会将其显示为文本而不是将其显示为文本。在该标记中以粗体显示。如果我不使用上述行,即

htmlentities(($_POST[content]), ENT_QUOTES);

然后,我无法将数据插入数据库中,因为数据可以包含单引号和双引号。

我该如何处理?

因此,基本上,我应该能够将数据插入数据库中单引号或双引号不会引起问题的地方。当将数据呈现回屏幕时,它应呈现html选项卡,因为它们应该呈现到浏览器中,并且引号应作为引号显示在要重新显示在屏幕上的文本中。

您正在将数据插入数据库而不是HTML文档中。不要使用htmlentities。使用数据库提供的用于转义内容的任何方法。这应该是使用绑定参数的东西。 Bobby-tables解释了许多不同的方法

使用此功能之前,请确保已建立正确的mysql连接mysql_connect。

我将htmlentities(($_POST[content]), ENT_QUOTES);更改为mysql_real_escape_string($_POST[content]);,它将一个空白记录保存到数据库中,而不是我希望保存的文本...我按如下方式进行连接:$connection = mysql_connect(localhost, user, pass) or die (mysql_error());

您的代码中是否有mysql_connect? 如果您遇到此问题,请尝试使用addslashes函数。

您是否将内容分配回变量? $html = mysql_real_escape_string($html)是正确的,但仅执行mysql_real_escape_string($html)不会对$ html变量产生影响

是的,我正在将其分配回变量,但无法正常工作。 但是,addslashes似乎可以解决问题。 谢谢。

还可以查看stackoverflow.com/questions/534742/了解更多信息。

您必须使用strip_tags($str);

如果您只想删除html标记,则单引号或双引号将保持不变...

但是您遇到的问题是...您在字符串中放置了很多空格,因此可以完美地使用use strip_tags($str);

在我的表中放很多HTML代码对我来说似乎是一个丑陋的方法,如果要添加帖子,则需要这样做,但是如果要保存的页面可能需要重新填充,则可以考虑使用另一种方法。

这是我的方法:

清除任何HTML代码

将有用的数据放入数组(序列化数组)

将数组保存到数据库

调用页面时重新填充数组(反序列化数组)

这使我省去了<1kb数据,而不是125kb

如果您正在使用类似模板的系统,这是一个好方法。