参考这个函数
if(! function_exists("TextDiff")):
function TextDiff($old, $new) {
$mode = true;
if(! is_array($old)) {
$bodyA = explode("\n", $old);
$bodyB = explode("\n", $new);
$mode = false;
}else {
$bodyA = $old;
$bodyB = $new;
} $result['added'] = array_diff_assoc($bodyA, $bodyB);
$result['deleted'] = array_diff_assoc($bodyB, $bodyA);
if($mode)
return $result;
if(count($result['added']) >= count($result['deleted']))
$ar = $result['added'];
else
$ar = $result['deleted'];
$retval = '';
foreach($ar as $k=>$v) {
$added = isset($result['added'][$k]) ? $result['added'][$k] : "";
$deleted = isset($result['deleted'][$k]) ? $result['deleted'][$k] : "";
preg_match_all("/[\x81-\xfe]?./",$added,$a1); preg_match_all("/[\x81-\xfe]?./",$deleted,$b1);
$p = TextDiff($b1[0],$a1[0]);
foreach($p['added'] as $key=>$value){
$b1[0][$key] = "<font color=lime>$value</font>";
}
$deleted = join("",$b1[0]);
foreach($p['deleted'] as $key=>$value){
$a1[0][$key] = "<s><font color=red>$value</font></s>";
}
$added = join("",$a1[0]);
$retval .= "<br><br>第".($k+1)."行";
$retval .= "<br>[原文]$added";
$retval .= "<br>[新文]$deleted";
}
return $retval;
}
endif;
if(! function_exists("TextDiff")):
function TextDiff($old, $new) {
$mode = true;
if(! is_array($old)) {
$bodyA = explode("\n", $old);
$bodyB = explode("\n", $new);
$mode = false;
}else {
$bodyA = $old;
$bodyB = $new;
} $result['added'] = array_diff_assoc($bodyA, $bodyB);
$result['deleted'] = array_diff_assoc($bodyB, $bodyA);
if($mode)
return $result;
if(count($result['added']) >= count($result['deleted']))
$ar = $result['added'];
else
$ar = $result['deleted'];
$retval = '';
foreach($ar as $k=>$v) {
$added = isset($result['added'][$k]) ? $result['added'][$k] : "";
$deleted = isset($result['deleted'][$k]) ? $result['deleted'][$k] : "";
preg_match_all("/[\x81-\xfe]?./",$added,$a1); preg_match_all("/[\x81-\xfe]?./",$deleted,$b1);
$p = TextDiff($b1[0],$a1[0]);
foreach($p['added'] as $key=>$value){
$b1[0][$key] = "<font color=lime>$value</font>";
}
$deleted = join("",$b1[0]);
foreach($p['deleted'] as $key=>$value){
$a1[0][$key] = "<s><font color=red>$value</font></s>";
}
$added = join("",$a1[0]);
$retval .= "<br><br>第".($k+1)."行";
$retval .= "<br>[原文]$added";
$retval .= "<br>[新文]$deleted";
}
return $retval;
}
endif;
LINUX 下调用系统命令 diff
\font color=lime>?輯font>??闼/font>?漯font>??伯font>??徼/font>?
preg_match_all("/[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/",$added,$a1);preg_match_all("/[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/",$deleted,$b1);