判断两个字串有何变化

//windows 下调用 系统 命令 fc
//LINUX 下调用系统命令 diff

 

 

//此函数是针对gb码的

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; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值