我正在为将用于编写和编辑文档的系统集思广益(想想 Google 文档,但没有实时协作)。我将使用所见即所得的编辑器,因此文档将包含 HTML。
编辑者将对文档进行更改,原始用户应看到这些修订并手动进行更改。
当涉及到 HTML 标签时,如何使用 diff 系统?我希望修订显示对格式的任何更改,例如,如果某些内容被加粗,那么它应该接受该更改。它还应该使内容更改像普通差异一样可见。
如果我使用常规差异系统,那么它会将 HTML 视为常规文本,但显然不是这种情况。感谢您的指点!
最佳答案
我使用过的用于 HTML 差异化的最佳 OSS 库是 DaisyDiff (PHP Version)。
值得注意的是,就此而言,区分 HTML 或 XML 是一件麻烦事。如果您可以通过在传递给差异算法之前进行一些预处理来简化要比较的数据,您可能会得到更好的结果。例如,如果你真的只使用像 <p>
这样的东西, <b>
, <i>
标签标记它们并使用差异算法,例如 diff-match-patch或 GNU Diff .然后替换这些 token 。看这个diff-match-patch wiki page对此有一些想法。
关于php - 在包含 HTML 的文档上使用差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513815/