简单的内容差异对比函数
2010-08-30 08:06
429 查看
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; }
本函数适用于 GBK 编码,如是 utf-8 编码请将 "/[/x81-/xfe]?./" 改为 "/./u"
相关文章推荐
- 简单的内容分页函数
- python-文件内容差异对比
- 简单对比微软WorkFlow3.5与4.0的差异
- 简单的图片对比函数
- 简单同步时 EnterCriticalSection/InterlockedIncrement系列函数的对比
- 有两个不同list,需要对比两个list内容且输出差异的内容
- 简单对比C语言中的fputs()函数和fputc()函数
- Python自动化运维笔记(四):使用difflib模块实现文件内容差异对比
- Lua io.write() 对比 print 函数, 简单 I/O 模式
- 【lizhi125】帮你揪出文档/代码的差异 文档内容差异对比工具-WinMerge中文版
- VB6做了个简单的ListView内容导出函数
- 文件内容差异对比
- VB6做了个简单的ListView内容导出函数
- 如何使用UltraCompare对比两个文件夹内容差异
- 文件内容差异对比-python
- VB6做了个简单的ListView内容导出函数
- Python自动化运维_文件内容差异对比分析
- 大公司中app研发的工作内容以及岗位对比和简单职业阶段分析--适合新人
- arm汇编的学习笔记,对比x86和arm(1)-从最简单的函数谈起
- 使用文件操作函数实现简单的CP、cat、size功能及读取文件内容初始化结构体