将HTML插入数据库


Inserting HTML into database

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

我使用下面的行来处理数据:

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

这个问题是,当我选择这个数据把它带回屏幕上,显示实际的html标签,而不是渲染html,即,如果我使用<b>bold</b>标签,是显示它作为文本,而不是使文本内的标签粗体。如果我不使用上面的行,即

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

那么我就不能将数据插入到数据库中,因为数据可以包含单引号和双引号。

我该如何处理这个问题?

所以基本上,我应该能够将数据插入到数据库中,其中单引号或双引号不应该引起问题。当将数据呈现回屏幕时,它应该呈现html选项卡,因为它们应该呈现到浏览器中,引号应该在被呈现回屏幕的文本中显示为引号。

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

$html = mysql_real_escape_string($html);
http://php.net/manual/en/function.mysql-real-escape-string.php

在使用此函数之前,请确保您已经建立了正确的mysql连接mysql_connect

你必须使用strip_tags($str);如果你只想删除HTML标签..单引号或双引号将保留…但你的问题是……你把大量的空白与你的字符串,所以你可以完美地使用use strip_tags($str);

把这么多的HTML代码到mysql表似乎是一个丑陋的方法对我来说,这是需要的,如果你正在添加一个帖子,但如果你正在保存一个页面,你可能会重新填充你可以考虑另一种方式。

这是我的方法:

  1. 清除所有html代码
  2. 将有用的数据放入数组(serialize array)
  3. 保存数组到数据库
  4. 当页面被调用时重新填充数组(unserialize array)

这节省了我放入<1kb数据而不是125kb