(PECL xdiff >= 0.2.0)
xdiff_string_patch — Patche une chaîne avec un diff unifié
$str
, string $patch
[, int $flags
[, string &$error
]] )
Patche la chaîne str
avec un patch
unifié et retourne le résultat. patch
doit être un
patch unifié créé par les fonctions
xdiff_file_diff() et xdiff_string_diff().
Un paramètre optionnel flags
spécifie le mode de
l'opération. Toutes les parties rejetées seront stockées dans la
variable error
si elle est fournie.
str
La chaîne originale.
patch
Le patch unifié. Il doit avoir été créé en utilisant les fonctions xdiff_string_diff(), xdiff_file_diff() ou tout autre outil compatible.
flags
flags
peut être soit
XDIFF_PATCH_NORMAL
(mode par défaut, patch normal),
soit XDIFF_PATCH_REVERSE
(patch inversé).
Depuis la version 1.5.0, vous pouvez également utiliser l'opérateur binaire
OR pour activer le drapeau XDIFF_PATCH_IGNORESPACE
.
error
Si error
est fourni, les parties rejetées y seront
stockées.
Retourne la chaîne patchée, ou FALSE
si une erreur survient.
Exemple #1 Exemple avec xdiff_string_patch()
Le code suivant applique les changements à des articles.
<?php
$old_article = file_get_contents('./old_article.txt');
$diff = $_SERVER['patch']; /* disons que quelqu'un a passé un patch via un formulaire html */
$errors = '';
$new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors);
if (is_string($new_article)) {
echo "Nouvel article :\n";
echo $new_article;
}
if (strlen($errors)) {
echo "Rejets : \n";
echo $errors;
}
?>