0

PHPでインテリジェント差分をプログラミングしています。これは、コンテンツが 2 つの期間のルーターの構成である 2 つのファイルを比較するために使用されます。出力として、違いを色付きで強調表示するか、別の場所 (行) にある場合は強調表示する必要があります。

たとえば、入力 1:

185.255.0.0/26 がサブネット化され、1 つのサブネット
172.16.0.0/16 が直接接続され、Vlan 50

入力 2:

185.255.0.0/26 はサブネット化され、15のサブネット
172.16.0.0/16 は直接接続され、Vlan 5

レーベンシュタイン距離の行列を計算することで、線が同じか似ているかをばかげて認識できるようになりました。違いを強調するのに役立つ他のアルゴリズムを教えてもらえますか? おそらく、subversion で使用されているような類似のアルゴリズムや、total commander での比較が必要です。どこを見ればよいか教えていただけますか?

4

1 に答える 1

1

おそらく最も効率的な方法ではなく、実際の行が追加または削除された場合はかなり制限されます(それを検出するにはいくつかの方法が必要です。それを行う方法は複数あります(Waleed Khanによるコメントのリンクを参照))。

しかし、最初に合計文字列をチェックして、それが異なるかどうかを確認したらどうなるでしょうか。異なる場合は、文字列全体 (ソースとターゲット) をトークンに分割し、個々のトークンを比較できます。そうすれば、文字列全体のどの部分が異なるかを正確に伝える (および強調表示する) ことができます。

于 2013-01-15T13:19:51.970 に答える