0

如何使用 php 检查和查找两个文件之间的差异(例如 svn diff、netbeans diff)?

平台: Win 7 32bit, PHP 5.4.7 (VC9 X86 32bit thread safe), XAMPP Version 1.8.1

加载的扩展: Core、bcmath、calendar、ctype、date、ereg、filter、ftp、hash、iconv、json、mcrypt、SPL、odbc、pcre、Reflection、session、standard、mysqlnd、tokenizer、zip、zlib、libxml、dom , PDO, bz2, SimpleXML, wddx, xml, xmlreader, xmlwriter, apache2handler, Phar, curl, mbstring, exif, gd, gettext, mysql, mysqli, pdo_mysql, pdo_sqlite, soap, sockets, sqlite3, xmlrpc, xsl, mhash

4

2 回答 2

2

这完全取决于您希望如何比较文件。它们是文本文件还是二进制文件等。如果我们假设它们是文本文件,您必须决定是否应该忽略空格等。您可以做的是打开这两个文件进行比较,逐个字符地检查它们并进行比较。它归结为解决最长公共子序列问题。我建议您开始查看用于比较的算法,例如在这里找到的

http://en.wikipedia.org/wiki/Diff#Algorithm

另一种方法是包含补丁(可以在 Windows 中找到)并在后台运行它以查找差异并构建补丁文件(因为我的猜测是您想要找到差异并能够存储它们并可能应用以后呢?)

于 2013-05-14T06:24:50.163 回答
2

XDiff 扩展对您的情况很有用,

xdiff 扩展使您能够创建和应用包含不同文件版本之间差异的补丁文件。

此扩展支持两种操作模式 - 字符串和文件,以及两种不同的补丁格式 - 统一和二进制。统一补丁非常适合文本文件,因为它们易于阅读且易于查看。对于档案或图像等二进制文件,二进制补丁将是适当的选择,因为它们是二进制安全的并且可以很好地处理不可打印的字符。

参考:

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

于 2013-05-14T06:30:25.710 回答