我有一个可能包含不安全HTML的字符串。我想转义字符串中的标记,将<script>
更改为<script>
我怎么能用Dart做到这一点?
答案 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 <script>world</script>
默认行为是转义撇号,大于/小于,小于引号和斜杠。
如果您想控制转义的内容,可以使用HtmlEscapeMode创建新的HtmlEscape
。
例如,要仅转义大于/小于和小于和斜杠,请尝试以下操作:
var sanitizer = const HtmlEscape(HtmlEscapeMode.ELEMENT);
记住,Dart会在字符串进入HTML之前自动清理字符串。因此,您可能不需要手动转义HTML脚本。如果您使用不安全的字符串调用element.setInnerHtml
,它将被清理。