php class.Diff文本或文件内容差异对比代码(类似svn)

代码语言:php

所属分类:文件

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php

/*

class.Diff.php

A class containing a diff implementation

Created by Stephen Morley - http://stephenmorley.org/ - and released under the
terms of the CC0 1.0 Universal legal code:

http://creativecommons.org/publicdomain/zero/1.0/legalcode

*/


// A class containing functions for computing diffs and formatting the output.
class Diff{

 
// define the constants
 
const UNMODIFIED = 0;
 
const DELETED    = 1;
 
const INSERTED   = 2;

 
/* Returns the diff for two strings. The return value is an array, each of
   * whose values is an array containing two values: a line (or character, if
   * $compareCharacters is true), and one of the constants DIFF::UNMODIFIED (the
   * line or character is in both strings), DIFF::DELETED (the line or character
   * is only in the first string), and DIFF::INSERTED (the line or character is
   * only in the second string). The parameters are:
   *
   * $string1           - the first string
   * $string2           - the second string
   * $compareCharacters - true to compare characters, and false to compare
   *                      lines; this optional parameter defaults to false
   */

 
public static function compare(
      $string1
, $string2, $compareCharacters = false){

   
// initialise the sequences and comparison start and end positions
    $start
= 0;
   
if ($compareCharacters){
      $sequence1
= $string1;
      $sequence2
= $string2;
      $end1
= strlen($string1) - 1;
      $end2
= strlen($string2) - 1;
   
}else{
      $sequence1
= preg_split('/\R/', $string1);
      $sequence2
= preg_split('/\R/', $string2);
      $end1
= count($sequence1) - 1;
      $end2
= count($sequence2) - 1;
   
}

   
// skip any common prefix
   
while ($start <= $end1 && $start <= $end2
       
&& $sequence1[$start] == $sequence2[$start]){
      $start
++;
   
}

   
// skip any common suffix
   
while ($end1 >= $start && $end2 >= $start
       
&& $sequence1[$end1] == $sequence2[$end2]){
      $end1
--;
      $end2
--;
   
}

   
// compute the table of longest.........完整代码请登录后点击上方下载按钮下载查看

网友评论0