php - 在包含 HTML 的文档上使用差异

标签 php javascript html diff

我正在为将用于编写和编辑文档的系统集思广益(想想 Google 文档,但没有实时协作)。我将使用所见即所得的编辑器,因此文档将包含 HTML。

编辑者将对文档进行更改,原始用户应看到这些修订并手动进行更改。

当涉及到 HTML 标签时,如何使用 diff 系统?我希望修订显示对格式的任何更改,例如,如果某些内容被加粗,那么它应该接受该更改。它还应该使内容更改像普通差异一样可见。

如果我使用常规差异系统,那么它会将 HTML 视为常规文本,但显然不是这种情况。感谢您的指点!

最佳答案

我使用过的用于 HTML 差异化的最佳 OSS 库是 DaisyDiff (PHP Version)。

值得注意的是,就此而言,区分 HTML 或 XML 是一件麻烦事。如果您可以通过在传递给差异算法之前进行一些预处理来简化要比较的数据,您可能会得到更好的结果。例如,如果你真的只使用像 <p> 这样的东西, <b> , <i>标签标记它们并使用差异算法,例如 diff-match-patchGNU Diff .然后替换这些 token 。看这个diff-match-patch wiki page对此有一些想法。

关于php - 在包含 HTML 的文档上使用差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513815/

相关文章:

javascript - 将底部变量值获取到页面顶部

javascript - 单击不导航时,超链接在 ckeditor 中不起作用

html - 禁用在textarea中键入

javascript - 如何在 Javascript 中以编程方式获取 HTML 表单的最终提交 URL

php - 如何输出一个数组,以便可以将其复制粘贴回代码中?

php - Magento:对产品集合进行排序

php - 如何在mysql wordpress中获取数据时在不同字段中指定相同的列名

javascript - HTML canvas JavaScript 库和框架的最新技术水平是什么?

jquery - Z-Index IE 7 和 8

php - 准备好的 PDO 语句在设置变量后中断代码