php检查文件差异存在并获取文件差异

时间:2013-05-14 05:52:47

标签: php diff

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

平台: Win 7 32位,PHP 5.4.7(VC9 X86 32位线程安全),XAMPP版本1.8.1

已加载的扩展程序:核心,bcmath,日历,ctype,日期,ereg,过滤器,ftp,哈希,iconv,json,mcrypt,SPL,odbc,pcre,反射,会话,标准,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

2 个答案:

答案 0 :(得分:2)

这一切都取决于您希望如何比较文件。它们是文本文件还是二进制文件等。如果我们假设它们是文本文件,您必须决定是否应该忽略空格等。您可以做的是打开两个文件进行比较并逐个字符地进行比较并进行比较。它归结为解决Longest Common Sub-sequence problem。我建议你开始查看比较算法,例如

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

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

答案 1 :(得分:2)

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

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

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

参考:

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