This package is for comparison strings and show changes.
- compare strings
- compare files
- group string differences into hunk groups
Via composer
:
composer require vi-kon/laravel-diff
Simple usage:
// Compare string line by line
$diff = Diff::compare("hello\na", "hello\nasd\na");
// Outputs span, ins, del HTML tags, depend if entry
// is unmodified, inserted or deleted
echo $diff->toHTML();
Compare two file:
// Compare files line by line
$diff = Diff::compareFiles("a.txt", "b.txt");
echo $diff->toHTML();
You can customize output by getting raw data:
$options = [
// Compare by line or by characters
'compareCharacters' => false,
// Offset size in hunk groups
'offset' => 2,
];
$diff = Diff::compare("hello\na", "hello\nasd\na", $options);
$groups = $diff->getGroups();
foreach($groups as $i => $group)
{
// Output: Hunk 1 : Lines 2 - 6
echo 'Hunk ' . $i . ' : Lines '
. $group->getFirstPosition() . ' - ' . $group->getLastPosition();
// Output changed lines (entries)
foreach($group->getEntries() as $entry)
{
// Output old position of line
echo $entry instanceof \ViKon\Diff\Entry\InsertedEntry
? '-'
: $entry->getOldPosition() + 1;
echo ' | ';
// Output new position of line
echo $entry instanceof \ViKon\Diff\Entry\DeletedEntry
? '-'
: $entry->getNewPosition() + 1;
echo ' - ';
// Output line (entry)
echo $entry;
}
}
This package is licensed under the MIT License