如何为HTML转义字符串?

时间:2013-12-12 19:24:10

标签: dart

我有一个可能包含不安全HTML的字符串。我想转义字符串中的标记,将<script>更改为&lt;script&gt;

我怎么能用Dart做到这一点?

1 个答案:

答案 0 :(得分:8)

使用dart:convert中的HtmlEscape

import 'dart:convert' show HtmlEscape;

void main() {
  var unsafe = 'Hello <script>world</script>';

  var sanitizer = const HtmlEscape();

  print(sanitizer.convert(unsafe));
}

以上应用打印:

Hello &lt;script&gt;world&lt;&#x2F;script&gt;

默认行为是转义撇号,大于/小于,小于引号和斜杠。

如果您想控制转义的内容,可以使用HtmlEscapeMode创建新的HtmlEscape

例如,要仅转义大于/小于和小于和斜杠,请尝试以下操作:

var sanitizer = const HtmlEscape(HtmlEscapeMode.ELEMENT);

记住,Dart会在字符串进入HTML之前自动清理字符串。因此,您可能不需要手动转义HTML脚本。如果您使用不安全的字符串调用element.setInnerHtml,它将被清理。