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