php-diff - 如果2个文件相同则显示“无差异”

时间:2017-02-22 14:54:03

标签: php diff

我正在使用php-diff这是一款出色的基于网络的差异工具,当文件不同时,输出效果非常好。

我遇到的问题是,当2个文件相同时,根本就没有输出。

我正在使用的代码是根据上面链接中使用“并排”输出的示例:

$a = explode("\n", file_get_contents(dirname(__FILE__).'/a.txt'))
$b = explode("\n", file_get_contents(dirname(__FILE__).'/b.txt'));
require_once dirname(__FILE__).'/../lib/Diff/Renderer/Html/SideBySide.php';
$options = [];
$diff = new Diff($a, $b, $options);
$renderer = new Diff_Renderer_Html_SideBySide;
echo $diff->Render($renderer);

假设a.txtb.txt的内容相同。 如果我var_dump($diff)它显示的对象包含两个文件的内容以及class Diff的属性。

问题是$diff中没有任何内容可以用来确定文件是否相同,因为$diff->Render似乎只在有差异时输出任何内容。

有谁知道如何修改它以包含某些内容,甚至是简单的消息,例如“这些文件之间没有差异”。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

class SideBySideWithMessage extends Diff_Renderer_Html_SideBySide {
      public function render() {
           $html = parent::render(); 
           if (empty($html)) { 
               return "Files are identical"; //Could do some formatting as well
           }
           return $html;
      }
}



$renderer = new SideBySideWithMessage;
echo $diff->Render($renderer);