如何为HTML转义字符串?

Set*_*add 6 dart

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

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

Set*_*add 8

使用HtmlEscapedart:convert.

import 'dart:convert' show HtmlEscape;

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

  var sanitizer = const HtmlEscape();

  print(sanitizer.convert(unsafe));
}
Run Code Online (Sandbox Code Playgroud)

上面的应用程序打印:

Hello &lt;script&gt;world&lt;&#x2F;script&gt;
Run Code Online (Sandbox Code Playgroud)

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

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

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

var sanitizer = const HtmlEscape(HtmlEscapeMode.ELEMENT);
Run Code Online (Sandbox Code Playgroud)

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