2017-02-22 13 views
0

Я использую php-diff, который является отличным инструментом для разграничения через Интернет с очень хорошим выходом, когда файлы разные.php-diff - показать «нет различий», если 2 файла идентичны

Проблема, с которой я сталкиваюсь, заключается в том, что, когда 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 только выводит что-либо, когда есть различия.

Кто-нибудь знает, как можно изменить это, чтобы включить что-то, даже простое сообщение, например «никаких различий между этими файлами».

+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); 

 Смежные вопросы

  • Нет связанных вопросов^_^