pecl / xdiff
File differences/patches.
Package info
github.com/php/pecl-text-xdiff
Language:C
Type:php-ext
Ext name:ext-xdiff
pkg:composer/pecl/xdiff
Requires
- php: >=7.0.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
PHP extension for creating and applying patches to both text and binary files. Wraps the libxdiff library.
Installation
PIE (recommended)
pie install pecl/xdiff
PECL
pecl install xdiff
From source
Requires libxdiff with xdl_set_allocator, xdl_rabdiff, and XDL_PATCH_IGNOREBSPACE support.
phpize ./configure --with-xdiff make make install
API
Diff
xdiff_string_diff(string $str1, string $str2, int $context = 3, bool $minimal = false): string|false
Creates a unified diff of two strings. $context sets the number of surrounding lines. $minimal reduces diff size at the cost of speed.
xdiff_file_diff(string $file1, string $file2, string $dest, int $context = 3, bool $minimal = false): bool
Creates a unified diff of two files and writes the result to $dest.
xdiff_string_diff_binary(string $str1, string $str2): string|false
Creates a binary diff of two strings.
xdiff_file_diff_binary(string $file1, string $file2, string $dest): bool
Creates a binary diff of two files and writes the result to $dest.
xdiff_string_rabdiff(string $str1, string $str2): string|false
Creates a binary diff of two strings using the Rabin fingerprint algorithm.
xdiff_file_rabdiff(string $file1, string $file2, string $dest): bool
Creates a binary diff of two files using the Rabin fingerprint algorithm and writes the result to $dest.
Patch
xdiff_string_patch(string $file, string $patch, int $flags = XDIFF_PATCH_NORMAL, ?string &$error = null): string|bool
Applies a unified patch to a string. Returns the patched string, or false on error. Rejected chunks are returned via $error.
$flags: XDIFF_PATCH_NORMAL (default) or XDIFF_PATCH_REVERSE.
xdiff_file_patch(string $file, string $patch, string $dest, int $flags = XDIFF_PATCH_NORMAL): string|bool
Applies a unified patch from a file. Returns true on success, a string of rejected chunks on partial failure, or false on error.
xdiff_string_patch_binary(string $str, string $patch): string|false
Applies a binary patch to a string. Works with both bdiff and rabdiff patches.
xdiff_file_patch_binary(string $file, string $patch, string $dest): bool
Applies a binary patch from a file and writes the result to $dest.
Merge
xdiff_string_merge3(string $str1, string $str2, string $str3, ?string &$error = null): string|bool
Three-way merge of strings. Returns the merged string, or false on error. Conflicts are returned via $error.
xdiff_file_merge3(string $file1, string $file2, string $file3, string $dest): string|bool
Three-way merge of files. Returns true on success, a string of rejected chunks on conflict, or false on error.
Binary diff size
xdiff_string_bdiff_size(string $patch): int|false
Returns the size of the file that would be created by applying the given binary patch.
xdiff_file_bdiff_size(string $patch_file): int|false
Same as above, but reads the patch from a file.
Constants
| Constant | Description |
|---|---|
XDIFF_PATCH_NORMAL |
Apply patch normally (default) |
XDIFF_PATCH_REVERSE |
Reverse the patch |
XDIFF_PATCH_IGNORESPACE |
Ignore whitespace when patching |