【发布时间】:2013-03-25 14:28:25
【问题描述】:
我正在用 php 编写一个工具,用于比较 HTML 文件并显示差异。现在我正在寻找一种有效的方法来计算两个 HTML 文件之间的百分比差异。这些文件可以任意长(我拥有的文件可以长达 300000 个字符)。
经过一些研究,我偶然发现了 Levensthein 距离,它是 O(n*m) 的算法,需要空间 O(n*m):php 版本最多只能支持 255 个字符和我自己的 O( n) 空间,太慢了。 之后,我尝试了php函数similar_text,但该算法对于非常大的HTML文件也太慢了。
所以现在我正在寻找另一种更有效的算法来比较 HTML 文件。近似算法也很好。谁能给我一些关于如何做到这一点的建议?
【问题讨论】:
-
您需要比较文件或其内容吗?如果你 strip_tags 文件会短得多。
-
我想这取决于您正在检查哪些差异?例如空格算不算等?
-
为什么不能运行 diff 并使用它的输出?
-
@Devos50:你已经将近一年没有回答我的问题了。好的,一些新的细节:Smart Differencer(参见我的简历)在 代码结构(忽略不相关的东西,如空格)上做 Levenstein 距离,而不是字符,所以它的扩展性更好。您可以使用它的输出以比纯差异更有意义的方式计算您的百分比差异。是的,有一个用于区分 HTML。
标签: php html diff levenshtein-distance