php-diff - 如果 2 个文件相同则显示 "no differences"
php-diff - show "no differences" if 2 files are identical
我正在使用 php-diff,这是一个优秀的基于 Web 的差异工具,当文件不同时输出非常好。
我遇到的问题是,当 2 个文件相同时,根本没有输出。
我使用的代码是根据上面 link 中的示例使用 "side by side" 输出:
$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
似乎只在存在差异时输出任何内容。
有谁知道如何修改它以包含某些内容,甚至是简单的消息,例如 "no differences between these files"。
你可以这样做:
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);
我正在使用 php-diff,这是一个优秀的基于 Web 的差异工具,当文件不同时输出非常好。
我遇到的问题是,当 2 个文件相同时,根本没有输出。
我使用的代码是根据上面 link 中的示例使用 "side by side" 输出:
$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
似乎只在存在差异时输出任何内容。
有谁知道如何修改它以包含某些内容,甚至是简单的消息,例如 "no differences between these files"。
你可以这样做:
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);