计算两个 HTML 文件的百分比差异

Dev*_*s50 5 html php diff levenshtein-distance

我正在用 php 编写一个工具来比较 HTML 文件并显示差异。现在我正在寻找一种有效的方法来计算两个 HTML 文件之间的百分比差异。这些文件可以是任意长的(我拥有的文件可以长达 300000 个字符)。

经过一番研究,我偶然发现了 Levensthein 距离,它是一种 O(n*m) 算法,需要空间 O(n*m):php 版本最多只能支持 255 个字符,而我自己实现的 O(n) 空间,太慢了。之后,我尝试了php函数similar_text,但是该算法对于非常大的HTML文件来说也太慢了。

所以现在我正在寻找另一种更有效的算法来比较 HTML 文件。近似算法也很好。有人可以给我一些关于如何做到这一点的建议吗?

Azi*_*leh 2

您可以设置 xdiff 扩展:

http://www.php.net/manual/en/function.xdiff-file-diff.php

然后获取两个文件的差异,根据该差异,您可以轻松得出百分比。

例子:

  • 第一个文件 A:400 字
  • 第二个文件 B:400 字

差异结果:从 A 到 B 200 个单词差异

这会给你 50% 的相似度。