<?php
$a1='我们点击帖子右上的';
$b1='点出帖子右下的填写分数';$p1=str_replace(' ','|',trim(preg_replace('/(.{1,2})/','\1 ',$a1)));
preg_match_all('/'.$p1.'/',$b1,$m);
echo '相同的字有:'.$yes=trim(implode(' ',$m[0])).'<br>';
$p2=str_replace(' ','|',$yes);
echo '不同的字有:1、'. $p3=preg_replace('/'.$p2.'/','',$a1).'2、'.$p4=preg_replace('/'.$p2.'/','',$b1).'<br>';
$p3=str_replace(' ','|',trim(preg_replace('/(.{1,2})/','\1 ',$p3)));
$p4=str_replace(' ','|',trim(preg_replace('/(.{1,2})/','\1 ',$p4)));
echo '你要结果为:1、'.preg_replace('/('.$p3.')/','<font color=red>\1</font>',$a1).'2、'.preg_replace('/('.$p4.')/','<font color=red>\1</font>',$b1);
?>

解决方案 »

  1.   

    调用系统命令FC
    LINUX下:diff
      

  2.   

    yiwusuo() 的preg_replace('/(.{1,2})/','\1 ',$a1)对中英混合字符拆分不合理,会有乱码。
      

  3.   

    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;
      

  4.   

    http://community.csdn.net/Expert/topic/5402/5402861.xml?temp=.6665766
      

  5.   

    虽然还有点出入,但已经非常接近了,我可以开始修改了
    非常感谢Meteorlet(www.dictworld.com) 大侠的帮助
    同时也感谢作者Jinywu