通过删除双引号在 HTML 中将“<”显示为<

display "&lt" as < in html by removing double quotes

本文关键字:显示 中将 HTML 删除      更新时间:2023-09-26

我有一些带有数据的json数组,其中一个键具有以下格式

x = "&lt;sometext&gt;"

我想将其显示为"<sometext>"

现在它显示为&lt;sometext&gt;

我在 html 中有

<tr data-ng-repeat ="d in data">
    <td>{{d.x}}</td>
</tr>

我在另一个线程中看到您通过执行以下操作删除引号

var someStr = 'He said "Hello, my name is Foo"';
console.log(someStr.replace(/['"]+/g, ''));

我试过做

{{d.x.replace(/&lt;/, '<').replace(/&gt;/, '>')}}

但它所做的只是显示在 HTML 上,如下所示

{{d.x.replace(/</, '<').replace(/>/, '>')}}

您需要将字符串括在另一组双引号中,并取消转义括号。Angular 会负责将其显示为文本而不是 html:

"{{d.x.replace(/&lt;/, '<').replace(/&gt;/, '>')}}"

默认情况下,AngularJS模板表达式不计算HTML。发生这种情况是出于安全原因,因此您应该考虑相关的安全问题(用户可以操纵此变量吗?

如果您决定评估 HTML 内容,则可以使用 ngBindHtml .

<tr data-ng-repeat ="d in data">
    <td ng-bind-html="d.x"></td>
</tr>

出于安全原因,除了stanard AngularJS之外,您还需要包括ngSanitize。以这把小提琴为例。