我正在使用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.txt
和b.txt
的内容相同。
如果我var_dump($diff)
它显示的对象包含两个文件的内容以及class Diff
的属性。
问题是$diff
中没有任何内容可以用来确定文件是否相同,因为$diff->Render
似乎只在有差异时输出任何内容。
有谁知道如何修改它以包含某些内容,甚至是简单的消息,例如“这些文件之间没有差异”。
答案 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);