1

我们正在尝试编写一个脚本,用它们的内容替换不推荐使用的标签,例如<font>。我们所拥有的大致如下:

while($("font").length > 0) {
    $("font").each(function() {
        $(this).replaceWith($(this).html());
    });
}

while 循环只是因为如果字体标签被替换为它的内容并且其中一个元素子元素也是字体标签,那么它会同时捕获父元素和子元素。

我们的问题是我们无法控制输出的内容——这是由我们的客户输入的。我们最近看到的一个格式错误的 HTML 示例是<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 在将文本从 Word 传输到网站时添加的标签、<i><b><span>

提前致谢, 问候, 理查德

4

1 回答 1

0

从输出中替换所有 <font> 和 </font> 标记不是更容易吗?在给定的情况下,这仍然不会提供验证 XHTML 代码(<div> 在 <span> 中,未封闭的 <strong>),但可能足以查看文本。

以下是在经典 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>

但也许你可以通过这种方式添加更多的卫生设施来展示你需要的东西。

于 2013-02-11T10:20:29.840 回答