我有一个数据库查询,它返回页面的原始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,如果这是解决问题的唯一方法,我将不得不构建一个解决方法。
所以我不知道我是否意外地逃脱了这些路线,但我没有使用任何标题。
答案 0 :(得分:2)
您需要转义html字符(例如,<
变为<
。)
在javascript中你可以使用HE library或者这个函数,这通常很好,但并不涵盖HE库所有可能的情况
var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
return '&#'+i.charCodeAt(0)+';';
});
如果你使用php,你可以使用htmlentities,其他语言将具有内置或通过库提供的类似功能。