Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算两个HTML文件的百分比差异_Php_Html_Diff_Levenshtein Distance - Fatal编程技术网

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

Php 计算两个HTML文件的百分比差异,php,html,diff,levenshtein-distance,Php,Html,Diff,Levenshtein Distance,我正在用php编写一个工具,用于比较HTML文件并显示差异。现在,我正在寻找一种有效的方法来计算两个HTML文件之间的百分比差异。这些文件可以任意长(我拥有的文件可以长达300000个字符) 经过一些研究,我偶然发现了LevenSien距离,它是一种O(n*m)算法,需要空间O(n*m):php版本最多只能支持255个字符,我自己的O(n)空间实现太慢了。 在那之后,我尝试了类似于文本的php函数,但是对于非常大的HTML文件,该算法也太慢了 所以现在我正在寻找另一种更有效的算法来比较HTML文

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

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


所以现在我正在寻找另一种更有效的算法来比较HTML文件。近似算法也很好。有人能给我一些建议吗?

您可以设置xdiff扩展:

然后得到这两个文件的差异,根据这个差异你可以很容易地得出百分比

例如:

  • 第一个文件A:400字
  • 第二档B:400字
差异结果:从A到B相差200字


这将使您获得50%的相似性。

您需要比较文件或其内容吗?如果你去掉标签,文件会短得多。我想这取决于你检查的区别?e、 g.空格是否算数?为什么你不能运行diff并使用它的输出?@Devos50:你几乎有一年没有回答我的问题了。好的,一些新的细节:Smart Differenticer(参见我的简历)在代码结构上做Levenstein距离(忽略不相关的stuf,如空格),而不是字符,所以它的伸缩性更好。您可以使用它的输出以一种比纯差异更有意义的方式计算您的百分比差异。是的,有一种用于区分HTML。