首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当HTML可能格式错误时,替换所有实例的特定标记

当HTML可能格式错误时,替换所有实例的特定标记
EN

Stack Overflow用户
提问于 2013-02-07 18:29:48
回答 1查看 322关注 0票数 1

我们正在尝试编写一个脚本,用它们的内容替换过时的标签,比如<font>。我们所拥有的大致是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
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添加的标签。

提前谢谢,致敬,理查德

EN

回答 1

Stack Overflow用户

发布于 2013-02-11 18:20:30

在给定的情况下,这仍然不能提供验证XHTML代码(在内部,未关闭),但可能足以查看文本。

下面是如何使用regexp在经典ASP中执行此操作:

代码语言:javascript
代码运行次数:0
运行
复制
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>

但也许您可以通过这种方式添加更多的卫生设施,以显示您需要的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14748871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档