0

PHP を使用して 2 つのファイルの違い (svn diff、netbeans diff など) を確認するにはどうすればよいですか?

プラットフォーム : Win 7 32 ビット、PHP 5.4.7 (VC9 X86 32 ビット スレッド セーフ)、XAMPP バージョン 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、ソケット、sqlite3、xmlrpc、xsl、mhash

4

2 に答える 2

2

これはすべて、ファイルをどのように比較するかによって異なります。それらはテキスト ファイルですか、それともバイナリ ファイルなどですか。それらがテキスト ファイルであると仮定する場合、空白を無視するかどうかなどを決定する必要があります。できることは、2 つのファイルを開いて比較し、それらを 1 文字ずつ調べて比較することです。要するに、 Longest Common Sub-sequence problemを解決することです。たとえば、ここにあるような比較のためのアルゴリズムを見始めることをお勧めします

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

別のアプローチは、パッチ(Windows で見つけることができます) を含め、それをバックグラウンドで実行して違いを見つけ、パッチ ファイルを作成することです (私の推測では、違いを見つけて保存し、適用できるようにしたいからです)。後で?)

于 2013-05-14T06:24:50.163 に答える
2

XDiff 拡張機能はあなたのケースに役立ちます。

xdiff 拡張子を使用すると、ファイルの異なるリビジョン間の違いを含むパッチ ファイルを作成して適用できます。

この拡張機能は、文字列とファイルに対する 2 つの操作モードと、ユニファイドとバイナリの 2 つの異なるパッチ形式をサポートしています。統合パッチは、人間が判読でき、簡単に確認できるため、テキスト ファイルに最適です。アーカイブや画像などのバイナリ ファイルの場合、バイナリ パッチはバイナリ セーフであり、印刷できない文字を適切に処理できるため、適切な選択肢となります。

参照:

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

于 2013-05-14T06:30:25.710 に答える