我们正在尝试编写一个脚本,用它们的内容替换过时的标签,比如<font>
。我们所拥有的大致是这样的:
while($("font").length > 0) {
$("font").each(function() {
$(this).replaceWith($(this).html());
});
}
while循环只是因为如果一个font标签被替换为它的内容,并且其中一个元素的子元素也是一个font标签,那么它就同时捕获了父元素和子元素。
我们的问题是,我们无法控制输出的内容-这是由我们的客户输入的。我们最近看到的格式错误的超文本标记语言的一个例子是<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>
。显然,这在很大程度上是错误的,在理想情况下,我们的客户应该正确地输入它。上面的脚本在所有像样的浏览器-- Chrome、Firefox和Safari --以及令人惊讶的IE 9中都能很好地工作。然而,它在IE 6-8中中断了,导致这些标签中的任何内容都不会被显示。我们的目标是替换所有的字体标签,并且仍然显示其中的内容。
有没有人知道用jQuery或经典的ASP能达到预期效果的方法?
还要注意的是,在这种特定的客户端情况下,这是非常基本的-只有1个标签被请求替换。其他情况包括从Word将文本传输到网站、<i>
、<b>
、<span>
等时由Word添加的标签。
提前谢谢,致敬,理查德
发布于 2013-02-11 10:20:30
在给定的情况下,这仍然不能提供验证XHTML代码(在内部,未关闭),但可能足以查看文本。
下面是如何使用regexp在经典ASP中执行此操作:
function removeFontTags(s_text)
dim obj_regex
set obj_regex = new RegExp
obj_regex.IgnoreCase = true
obj_regex.Global = true
obj_regex.Pattern = "\<\/?font\>"
removeFontTags = obj_regex.replace(s_text, "")
set obj_regex = Nothing
end function
Response.Write removeFontTags("<p><font><span><font><div></font><strong></strong><strong></div></span></font></p>")
' returns: <p><span><div><strong></strong><strong></div></span></p>
但也许您可以通过这种方式添加更多的卫生设施,以显示您需要的内容。
https://stackoverflow.com/questions/14748871
复制相似问题