2017-02-22 58 views
0

我使用的是php-diff,這是一個非常好的基於Web的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似乎只有在有差異時才輸出任何內容。

有沒有人知道如何修改它以包含一些東西,甚至是一個簡單的消息,比如「這些文件之間沒有差異」。

+3

你就不能把它分配給一個變量,並檢查變量是空的?如果爲空,那麼你會迴應「這些文件之間沒有差異」,否則你會迴應差異? –

回答

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); 
相關問題