(PECL xdiff >= 0.2.0)
xdiff_string_patch — Parchear una cadena con un diff unificado
$str
, string $patch
[, int $flags
[, string &$error
]] )
Parchea una cadena str
con un parche unificado en parámetro patch
y devuelve el resultado. patch
tiene que ser un diff unificado creado por la función
xdiff_file_diff()/ xdiff_string_diff().
Un parámetro opcional flags
especifica el modo de operación. Cualquier
fragmento erróneo del parche será almacenado en el interior de la variable error
si
si esta es proporcionada.
str
La cadena original.
patch
La cadena parche unificada. Esta tiene que ser creada utilizando las funciones xdiff_string_diff(), xdiff_file_diff() o herramientas compatibles.
flags
flags
uede ser
XDIFF_PATCH_NORMAL
(modo por defecto, parche normal)
o XDIFF_PATCH_REVERSE
(parche invertido).
A partir de la versión 1.5.0, también se puede utilizar binario OR para habilitar el indicador
XDIFF_PATCH_IGNORESPACE
.
error
Si se proporciona entonces los fragmentos erróneos se almacenan dentro de esta variable.
Devuelve la cadena parcheada, o FALSE
en caso de error.
Ejemplo #1 Ejemplo de xdiff_string_patch()
El siguiente código aplica cambios en algún artículo.
<?php
$old_article = file_get_contents('./old_article.txt');
$diff = $_SERVER['patch']; /* Supongamos que alguien pega un parche para un formulario html */
$errors = '';
$new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors);
if (is_string($new_article)) {
echo "Nuevo artículo:\n";
echo $new_article;
}
if (strlen($errors)) {
echo "Fragmentos erróneos: \n";
echo $errors;
}
?>