判断两个字串有何变化

转载 2007年09月25日 17:15:00

//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; 

相关文章推荐

OJ 系列之求两个字符串最大的公共字串的长度

求两个字符串最大的公共字串的长度 1、暴力解法#include #include #include /*大写转化成小写*/ void large_to_little(char* strSrc) ...

求两个字符串最长公共字串

package com.sort; //求两个字符串最长公共字串, //算法:两个字符串形成一个矩阵,将两个字符不匹配的位置标记为0,c[i][j]中两个字符相匹配的位置标记为n,其中n=...

ocr 为什么一定要多加两个字?

  • 2008年01月02日 14:33
  • 52KB
  • 下载

js 限制输入框的字节数,中文两个字节,英文字母一个字节

也许在网上有很多类似的文章,但是这里大家应该知道,js里面,中文和字母的长度都是1,但是数据库不知道呀,数据库很多都是按照字节来的,所以,控制输入框的字节数看来比长度限制更为重要。 提出问题: 1、限...
  • wzgdjm
  • wzgdjm
  • 2016年03月14日 17:03
  • 1530

求两个字符串的最大公共字串问题

以下题目来自阿里2015校园招聘、牛客网。 给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如,query为 "...

两个字符串中最大的公共字串

/* *本程序寻找两个字符串中最大的公共字串,并且考虑到了长度一样长最大字串。 * * 想法:将一个字串按照从大到小的顺序拆开,第一匹配到的一定是最长字串,待该长度字串循环完毕后,停止循环。 ...

通过“中文”两个字来深度剖析各种不同的编码方式,彻底理解乱码是如何产生的?

编码:把字符转换成计算机能够识别的01序列。 解码:把01序列转换为人类认知的字符。 不同的编码方式最本质的不同就是各种编码方式都有自己独特的字符和字节的对照表。 Java用unicode编...
  • scyatcs
  • scyatcs
  • 2015年02月27日 15:46
  • 380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:判断两个字串有何变化
举报原因:
原因补充:

(最多只允许输入30个字)