XDIFF_STRING_PATCH(3) 1 XDIFF_STRING_PATCH(3)xdiff_string_patch - Patch a string with an unified diffSYNOPSIS
string xdiff_string_patch (string $str, string $patch, [int $flags], [string &$error])
DESCRIPTION
Patches a $str string with an unified patch in $patch parameter and returns the result. $patch has to be an unified diff created by
xdiff_file_diff(3)/xdiff_string_diff(3) function. An optional $flags parameter specifies mode of operation. Any rejected parts of the patch
will be stored inside $error variable if it is provided.
PARAMETERS
o $str
- The original string.
o $patch
- The unified patch string. It has to be created using xdiff_string_diff(3), xdiff_file_diff(3) functions or compatible tools.
o $flags
-$flags can be either XDIFF_PATCH_NORMAL (default mode, normal patch) or XDIFF_PATCH_REVERSE (reversed patch). Starting from ver-
sion 1.5.0, you can also use binary OR to enable XDIFF_PATCH_IGNORESPACE flag.
o $error
- If provided then rejected parts are stored inside this variable.
RETURN VALUES
Returns the patched string, or FALSE on error.
EXAMPLES
Example #1
xdiff_string_patch(3) example
The following code applies changes to some article.
<?php
$old_article = file_get_contents('./old_article.txt');
$diff = $_SERVER['patch']; /* Let's say that someone pasted a patch to html form */
$errors = '';
$new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors);
if (is_string($new_article)) {
echo "New article:
";
echo $new_article;
}
if (strlen($errors)) {
echo "Rejects:
";
echo $errors;
}
?>
SEE ALSO xdiff_string_diff(3).
PHP Documentation Group XDIFF_STRING_PATCH(3)
Check Out this Related Man Page
Patch(3pm) User Contributed Perl Documentation Patch(3pm)NAME
Text::Patch - Patches text with given patch
SYNOPSIS
use Text::Patch;
$output = patch( $source, $diff, STYLE => "Unified" );
use Text::Diff;
$src = ...
$dst = ...
$diff = diff( $src, $dst, { STYLE => 'Unified' } );
$out = patch( $src, $diff, { STYLE => 'Unified' } );
print "Patch successful" if $out eq $dst;
DESCRIPTION
Text::Patch combines source text with given diff (difference) data. Diff data is produced by Text::Diff module or by the standard diff
utility (man diff, see -u option).
patch( $source, $diff, options... )
First argument is source (original) text. Second is the diff data. Third argument can be either hash reference with options or all the
rest arguments will be considered patch options:
$output = patch( $source, $diff, STYLE => "Unified", ... );
$output = patch( $source, $diff, { STYLE => "Unified", ... } );
Options are:
STYLE => 'Unified'
STYLE can be "Unified", "Context" or "OldStyle".
The 'Unified' diff format looks like this:
@@ -1,7 +1,6 @@
-The Way that can be told of is not the eternal Way;
-The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
-The Named is the mother of all things.
+The named is the mother of all things.
+
Therefore let there always be non-being,
so we may see their subtlety,
And let there always be being,
@@ -9,3 +8,6 @@
The two are the same,
But after they are produced,
they have different names.
+They both may be called deep and profound.
+Deeper and more profound,
+The door of all subtleties!
TODO
Interfaces with files, arrays, etc.
AUTHOR
Vladi Belperchinov-Shabanski "Cade"
<cade@biscom.net> <cade@datamax.bg> <cade@cpan.org>
http://cade.datamax.bg
VERSION
$Id: Patch.pm,v 1.6 2007/04/07 19:57:41 cade Exp $
perl v5.10.1 2010-10-04 Patch(3pm)