从数据库中检索HTML,并将其格式化为html而不是纯文本

时间:2016-04-08 09:56:27

标签: php html mysql

我有一个数据库查询,它返回页面的原始HTML,但是如果我在页面上使用它,它会显示为纯文本(当然)。我如何将其格式化为HTML,以便它使用标签等。

我在数据库中拥有的一个示例:

<div class="test">SOME TEXT HERE</div> 

但它也是这样显示的。我希望它将文本格式化为HTML。所以它只会显示:

  

这里的一些文字

但是它也会出现在课堂上:“测试”

实现这一目标的最佳方法是什么?

我在MVC模型中使用Twig来呈现页面。所以页面渲染器就像这样

    public function renderArticle() {
        $twig = new TwigHelper();
        $args['title'] = "Artikel $this->articleId";
        $args['blogHTML'] = BlogController::retrieveBlogHTML($this->articleId);
        echo $twig->render('article.twig', $args);
     }

“BlogController :: retrieveBlogHTML”就像这样:

    public static function retrieveBlogHTML($id) {
    $db = DatabaseHelper::get();
    $st = $db->prepare("SELECT PageHTML FROM T_Blog WHERE BlogId = :BlogId");
    $st->execute([
        ':BlogId' => $id,
    ]);
    if ($st->errorCode() !== \PDO::ERR_NONE) {
        return null;
    }
    return $st->fetchAll();
}

这意味着我将无法在此时使用JavaScript,如果这是解决问题的唯一方法,我将不得不构建一个解决方法。

所以我不知道我是否意外地逃脱了这些路线,但我没有使用任何标题。

1 个答案:

答案 0 :(得分:2)

您需要转义html字符(例如,<变为&lt;。)

在javascript中你可以使用HE library或者这个函数,这通常很好,但并不涵盖HE库所有可能的情况

var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
   return '&#'+i.charCodeAt(0)+';';
});

如果你使用php,你可以使用htmlentities,其他语言将具有内置或通过库提供的类似功能。