2017 © Pedro Peláez
 

library diff-match-patch

Port of the google-diff-match-patch (https://code.google.com/p/google-diff-match-patch/) lib to PHP

image

yetanotherape/diff-match-patch

Port of the google-diff-match-patch (https://code.google.com/p/google-diff-match-patch/) lib to PHP

  • Saturday, February 11, 2017
  • by yetanotherape
  • Repository
  • 9 Watchers
  • 87 Stars
  • 67,003 Installations
  • PHP
  • 8 Dependents
  • 0 Suggesters
  • 12 Forks
  • 2 Open issues
  • 3 Versions
  • 10 % Grown

The README.md

Diff-Match-Patch

Build Status Latest Stable Version Total Downloads, (*1)

The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text:, (*2)

  • computes character-based diff of two texts
  • performs fuzzy match of given string
  • applies a list of patches.

This is the port of Google's diff-match-patch library to PHP., (*3)

Diff

Compare two plain text and efficiently return a array of differences. It works with characters, but if you want to compute word-based or line-based diff — you can easily tune it for your needs., (*4)

Usage:, (*5)

<?php

use DiffMatchPatch\DiffMatchPatch;

$text1 = "The quick brown fox jumps over the lazy dog.";
$text2 = "That quick brown fox jumped over a lazy dog.";
$dmp = new DiffMatchPatch();
$diffs = $dmp->diff_main($text1, $text2, false);
var_dump($diffs);

Returns:, (*6)

array(
    array(DiffMatchPatch::DIFF_EQUAL, "Th"),
    array(DiffMatchPatch::DIFF_DELETE, "e"),
    array(DiffMatchPatch::DIFF_INSERT, "at"),
    array(DiffMatchPatch::DIFF_EQUAL, " quick brown fox jump"),
    array(DiffMatchPatch::DIFF_DELETE, "s"),
    array(DiffMatchPatch::DIFF_INSERT, "ed"),
    array(DiffMatchPatch::DIFF_EQUAL, " over "),
    array(DiffMatchPatch::DIFF_DELETE, "the"),
    array(DiffMatchPatch::DIFF_INSERT, "a"),
    array(DiffMatchPatch::DIFF_EQUAL, " lazy dog."),
)

Demo, (*7)

Match

Given a search string, find its best fuzzy match in a plain text near the given location. Weighted for both accuracy and location., (*8)

Usage:, (*9)

<?php

use DiffMatchPatch\DiffMatchPatch;

$dmp = new DiffMatchPatch();
$text = "The quick brown fox jumps over the lazy fox.";
$pos = $dmp->match_main($text, "fox", 0); // Returns 16
$pos = $dmp->match_main($text, "fox", 40); // Returns 40
$pos = $dmp->match_main($text, "jmps"); // Returns 20
$pos = $dmp->match_main($text, "jmped"); // Returns -1
$pos = $dmp->Match_Threshold = 0.7;
$pos = $dmp->match_main($text, "jmped"); // Returns 20

Demo, (*10)

Patch

Apply a list of patches in Unidiff-like format onto plain text. Use best-effort to apply patch even when the underlying text doesn't match., (*11)

Usage:, (*12)

<?php

use DiffMatchPatch\DiffMatchPatch;

$dmp = new DiffMatchPatch();
$patches = $dmp->patch_make("The quick brown fox jumps over the lazy dog.", "That quick brown fox jumped over a lazy dog.");
// @@ -1,11 +1,12 @@
//  Th
// -e
// +at
//   quick b
// @@ -22,18 +22,17 @@
//  jump
// -s
// +ed
//   over
// -the
// +a
//   laz
$result = $dmp->patch_apply($patches, "The quick red rabbit jumps over the tired tiger.");
var_dump($result);

Returns:, (*13)

array(
    "That quick red rabbit jumped over a tired tiger.",
    array (
        true,
        true,
    ),
);

Demo, (*14)

API

Currently this library available in: * PHP * C++ * C# * Dart * Java * JavaScript * Lua * Objective-C * Python, (*15)

Regardless of language, each library uses the same API and the same functionality., (*16)

Algorithms

This library implements Myer's diff algorithm which is generally considered to be the best general-purpose diff. A layer of pre-diff speedups and post-diff cleanups surround the diff algorithm, improving both performance and output quality., (*17)

This library also implements a Bitap matching algorithm at the heart of a flexible matching and patching strategy., (*18)

Requirements

Installation

composer require yetanotherape/diff-match-patch

License

Diff-Match-Patch is licensed under the Apache License 2.0 - see the LICENSE file for details, (*19)

The Versions

11/02 2017

dev-master

9999999-dev https://code.google.com/p/google-diff-match-patch/

Port of the google-diff-match-patch (https://code.google.com/p/google-diff-match-patch/) lib to PHP

  Sources   Download

Apache-2.0

The Requires

  • php >=5.3
  • ext-mbstring *
  • lib-iconv *

 

The Development Requires

by Daniil Skrobov

diff match patch fuzzy search

11/02 2017

v1.0.1

1.0.1.0 https://code.google.com/p/google-diff-match-patch/

Port of the google-diff-match-patch (https://code.google.com/p/google-diff-match-patch/) lib to PHP

  Sources   Download

Apache-2.0

The Requires

  • php >=5.3
  • ext-mbstring *
  • lib-iconv *

 

The Development Requires

by Daniil Skrobov

diff match patch fuzzy search

24/11 2014

v1.0.0

1.0.0.0 https://code.google.com/p/google-diff-match-patch/

Port of the google-diff-match-patch (https://code.google.com/p/google-diff-match-patch/) lib to PHP

  Sources   Download

Apache-2.0

The Requires

  • php >=5.3
  • ext-mbstring *
  • lib-iconv *

 

The Development Requires

by Daniil Skrobov

diff match patch fuzzy search