【问题标题】:Javascript or regex solution to make markup XHTML compliant使标记符合 XHTML 的 Javascript 或正则表达式解决方案
【发布时间】:2010-09-02 08:07:28
【问题描述】:

我的网站内置了一个内联标记编辑器,它应该可以生成符合 XHTML 的标记。但正如您所见,它使用了已弃用的font 标记和size 属性。

<font style="font-family: Courier New; color: rgb(0, 0, 153);" size="2">
   asdfa
   <span style="color: rgb(0, 51, 0);">
    a
    <font size="5">fds</font>
   </span>
</font>

在其他浏览器上,它会生成 &lt;span class="Apple-style-span" style="font-size: xx-large;"&gt; 而不是 &lt;font size="5"&gt;

是否有 Javascript/Regex 解决方案来获取第一组标记并将其替换为使用 style 属性和 span 标记的 XHTML 兼容标记。 提前致谢!!

(ps.jQuery也可以)

【问题讨论】:

  • 最好自己修复编辑器,解决问题而不是症状...您使用的是哪个编辑器?
  • @Nick 没错。尼克编辑。我想如果开发人员没有修复它,我会完全不知所措:) 根据网站,“XHTML 输出”是“实验性的”。 nicedit.com
  • 这是有效的 XHTML 1.0 过渡。 :D

标签: javascript jquery regex xhtml replace


【解决方案1】:

上面的标记在 XHTML 1.0 Transitional 中完全有效。

是否使用 &lt;font&gt; 等已弃用的元素与是否使用 XHTML 或 HTML 语法完全正交。 XHTML 1.0 只不过是在 XML 语法中对 HTML 4.01 的重新表述:因此,与 HTML 4 一样,存在 Transitional 和 Strict 变体。

&lt;font size="5"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt; 在语义上同样无用。如果您希望标记使用一组在您的网站上下文中有意义的已定义元素和类,您将不得不让编辑器使用它们,而不是仅仅基于视觉格式。

您可以解析 XHTML 并在稍后的步骤中对其进行修改,以使其看起来更好。但是正如前面提到的,正则表达式根本不是一个足够的工具来做到这一点。您将需要一个 XML 解析器,然后修复元素和属性,然后将其重新序列化为 XHTML。在服务器端执行此操作是明智的,因为在客户端获取 XML 解析器有点棘手,如果您要清理非白名单,无论如何您都需要在服务器端执行此操作元素和属性。

【讨论】:

  • 感谢您的详尽解释!
【解决方案2】:

我不建议将 REGEX 用于此类工作。 (请参阅:有史以来最伟大的 'Regex to Parse HTML' 答案!)我知道,你不是在谈论一个完整的解析器,但我仍然认为你最好使用 JavaScript(或者你使用哪种后端语言) 're using) 和一个专门用于解析 html 的库。

您可能想查看 Sourceforge 上的 Tidy 开源项目。 IBM 有一个介绍/概述:“Convert from HTML to XML with HTML Tidy”。

【讨论】:

    【解决方案3】:

    如果可以选择在您的应用程序中实现其他所见即所得编辑器,请查看 CKEDITOR

    【讨论】:

    • CK 编辑器、TinyMCE 都不符合我们的要求
    猜你喜欢
    • 2023-03-14
    • 2018-11-21
    • 1970-01-01
    • 2010-10-25
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多