如何在php中显示来自mysql数据库的html

Posted

技术标签:

【中文标题】如何在php中显示来自mysql数据库的html【英文标题】:How to display html from a mysql database in php 【发布时间】:2013-02-15 16:24:33 【问题描述】:

我一直在试图弄清楚如何在 mysql 表中显示 html 标记。我尝试使用addslashes、mysql_real_escape_string 以及stripslashes 来正确查看标签。每次我通过浏览器查看数据时,它都会显示 html 的文本。示例:

我在 mysql 数据库表中有这个:

<strong>Test</strong>

在网页上查看时应显示如下: 测试

但相反,它显示&lt;strong&gt;Test&lt;/strong&gt;

我查看内容的php代码是:

<?php

require_once("inc.php"); //This includes the configuration for mysql database

?>
<html>
  <head>
  </head>
  <body>
    <p>
<?php

$conn = mysql_connect(HOST,USER,PASS) or die(mysql_error());
        mysql_select_db(NAME) or die(mysql_error());

$sql = "SELECT * FROM events";
$query = mysql_query($sql);

while($row = mysql_fetch_assoc($query))
  echo(stripslashes($row['details'])); //The details is what contains the <strong>Test</strong>


mysql_close($conn) or die(mysql_error());

?>
    </p>
  </body>
</html>

【问题讨论】:

你用什么代码来显示数据?另外,根据您的问题,您可能应该将 PHP 添加为标签。 您使用的框架很可能会自动输出转义以防止 xss 攻击。在我知道的所有框架中,有一种简单的方法可以在不转义的情况下输出字符串。您应该将框架的名称添加到问题中。 我正在使用 PHP 来显示数据。 【参考方案1】:

使用htmlspecialchars_decode

替换下面一行

  echo(stripslashes($row['details'])); //The details is what contains the <strong>Test</strong>

  echo htmlspecialchars_decode(stripslashes($row['details'])); //The details is what contains the <strong>Test</strong>

【讨论】:

这行得通!为什么不接受这个答案。真的很有帮助。

以上是关于如何在php中显示来自mysql数据库的html的主要内容,如果未能解决你的问题,请参考以下文章

PHP / MYSQL:如何在while循环中循环来自查询的匹配结果

如何显示来自 mySQL 的正确数据?

如何使用 AJAX 将来自 mysql 的数据显示到文本字段中

PHP显示来自MySQL的图像BLOB [重复]

如何从 MySQL 数据库中存储和检索图像并使用 Php 将其显示在 html 中? [复制]

在 PHP 中显示表格