Skip to content

PHP8 implementation of a Fine granularity Diff engine

License

Notifications You must be signed in to change notification settings

riki137/php-finediff

 
 

Repository files navigation

FineDiff

Originally written by Raymond Hill (https://github.com/gorhill/PHP-FineDiff)

Build Status Latest Stable Version License

Installation

composer require d4h/finediff

Usage

Render HTML

Render the difference between two strings as HTML:

$diff = new FineDiff\Diff();
echo $diff->render('string one', 'string two');

This would then output:

string <ins>tw</ins>o<del>ne</del>

You could change the granularity to CogPowered\FineDiff\Granularity\Word

$diff = new FineDiff\Diff(new FineDiff\Granularity\Word());
// Or via the setter method:
$diff->setGranularity(new FineDiff\Granularity\Word());

so the output is:

string <del>one</del><ins>two</ins>

You do this by passing it into the Diff constructor:

Grab opcode instructions

Opcode instructions are what tell FineDiff how to change one string into another.

$diff = new FineDiff\Diff();
echo $diff->getOpcodes('string one', 'string two');

This would then output:

c7d3i3:two

Render text using the opcodes:

$renderer = new FineDiff\Render\Text();
echo $renderer->process('string one', 'c7d3i3:two');

Would output:

string two

Same with HTML:

$renderer = new FineDiff\Render\Html();
echo $renderer->process('string one', 'c7d3i3:two');

Credits

Sponsored by D4H.

About

PHP8 implementation of a Fine granularity Diff engine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%