如何在PHP中从MySQL数据库呈现HTML标记?

9

我将像<ul><li>....</li></ul>这样的HTML标签存储在表格中。 我希望检索这些值作为HTML内容。 当我检索此数据时,我希望它显示为HTML内容,即应显示为项目符号而不是<ul><li>....</li></ul>

我尝试的代码:

<?php echo stripslashes($row3['description'])?>

我甚至尝试了htmlentities()html_entity_decode(),但都没有起作用。


是的,它会将输出显示为<ul> <li>......</li></ul> - Tejas Navghane
6个回答

15

14

对于Laravel用户,只需执行以下操作

{!! $my_db_ish['my_row'] !!}

代替

{{ $my_db_ish['my_row'] }}

还有其他选项吗?为什么? - Aipo
现在不知道是否有其他选项,但我知道第一个选项不会转义数据库中的值,而第二个选项会自动转义数据库中的值。 - The Billionaire Guy

1
使用 htmlspecialchars_decode
$str = "<ul><li></li></ul>";

echo htmlspecialchars_decode($str);

希望这能对你有所帮助 :)

0

使用 htmlspecialchars_decode() 函数。对我来说效果很好...

使用指南

带有代码的文本

<?php

    $text = " 
    <html>
    <head>
        <title>Page Title</title>
    </head>
    <body>
         Reference site about Lorem Ipsum, giving information on its origins, as well as a random Lipsum generator.
    </body>
    </html> ";

    OR

    $text = $row['columnname'];  // Here define your database table column name.

    echo htmlspecialchars_decode($text);  

?>

输出:

关于Lorem Ipsum的参考网站,提供其起源信息,以及随机Lipsum生成器。


0
显示 HTML 内容的唯一方法是简单地 echo $row3['description'],然而,这会让您面临漏洞的风险,除非您真的信任数据(即:从不),否则您应该先清理它。您可以尝试使用 htmlpurifier 进行清理。

0

不要调用任何

stripslashes、htmlentities或html_entity_decode

这些函数是为了防止HTML代码被处理为HTML代码(它将其转换为文本)。只需尝试echo $row3['description'];。 并确保以;结束您的行!

您还应该检查是否以正确的方式将数据保存到MySQL数据库中(以便在数据库中防止HTML编码)。

此外,在涉及用户的MySQL数据库中使用保存的HTML代码并不安全。他可能会添加自己的HTML代码,而你并不想让他这样做,所以要小心!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接