在UNIX中,如果有必要比较两个或多个文本文件,许多开发者借助于diff程序。几乎所有UNIX产品都默认提供这个程序,它逐行比较文件内容,并以各种输出格式显示文件间的差异。
虽然diff最初(现在仍然)是一个命令行实用工具,但大多数开发环境和语言,包括Perl、JSP和PHP都包含复制其功能的软件包。因此我们将讨论Text_Diff——一个在PHP环境中比较文件内容并以各种格式提交输出结果的PEAR类。
本教程将举例说明这个类的用法,阐明如何使用它动态比较PHP文件内容,并以网页的形式提交结果。这里我假设你应用一个Apache和PHP环境,并且已经正确安装PEAR Text_Diff类。
注:你可以下载,或使用这里提供的用法说明,直接从网络上安装PEAR Text_Diff软件包。
创建测试文件
在编写任何代码前,有必要创建我们在本教程中用到的测试文件。这是两个简单的文件,我们在其中有意添加了几个Text_Diff应该能够发现的差异。列表A是第一个文件——data1.txt。
列表A
apple
banana
cantaloupe
drumstick
enchilada
fig
grape
horseradish
列表B是第二个文件——data2.txt。
列表B
apple
bat
cantaloupe
drumstick
enchilada
fig
peach
pear
zebra
进行基本的比较
建立测试文件后,首先我们简单说明Text_Diff的用法。先从列表C的脚本开始:
列表C
<?php
// adjust file paths as per your local configuration!
include_once "Text/Diff.php";
include_once "Text/Diff/Renderer.php";
// define files to compare
$file1 = "data1.txt";
$file2 = "data2.txt";
// perform diff, print output
$diff = &new Text_Diff(file($file1), file($file2));
$renderer = &new Text_Diff_Renderer();
echo $renderer->render($diff);
?>