我怎样才能最好地净化文本
abc' a>b<c & a<b>c转换/显示
abc' a>b≤c & a≤b>c或以明文形式
abc' a>b<c & a<b>c这样我就可以通过
myDiv.innerHtml=... or
myDiv.setInnerHtml(..., myValidator, mySantitizer);文本赋值myDiv.text=...转换all &和<>,消除有效的撇号' -<>类/方法也会转换所有&在所有HtmlEscapeMode模式中。
可以写我自己的消毒液,但希望我忽略了一些标准库/调用。
发布于 2015-06-26 10:32:59
import 'dart:html';
import 'dart:convert';
void main() {
String htmlStr = r'abc' a>b<c & a<b>' * 3;
var reg = new RegExp(r"(.*?)(&#[1-9][0-9]{1,3}|[A-Za-z][0-9A-Za-z]+;)|(.*)");
List<Match> matchs = reg.allMatches(htmlStr);
var resStr = '';
matchs.forEach((m) {
var g1 = m.group(1);
var g2 = m.group(2);
var g3 = m.group(3);
g1 = HTML_ESCAPE.convert(g1 == null ? '' : g1);
g2 = g2 == null ? '' : g2;
g3 = HTML_ESCAPE.convert(g3 == null ? '' : g3);
resStr += g1 + g2 + g3;
});
print(resStr);
document.body.setInnerHtml(resStr);
}发布于 2015-08-03 06:06:36
经过一番思考后,我意识到使用验证器或HtmlEscape/Mode并不是解决问题的最佳方法。
最初的问题是翻译引擎使用“撇号”--可能是为了不将其与误用撇号作为单引号相混淆。
总之,最好的解决方案是用正确的unicode字符替换撇号,这实际上是
(正确的)撇号U+0027‘是错误的是字符字体打印它(不正确)直-这图形的家伙真的讨厌-喜欢直“。
这样,您可以将翻译后的文本分配给element.text,如果其中包含有问题的字符,则由Dart自动转义--并且呈现得很好。
https://stackoverflow.com/questions/31015835
复制相似问题