xdiff_string_patch_binary
xdiff_string_rabdiff
xdiff 関数
PHP Manual

# xdiff_string_patch

(PECL xdiff >= 0.2.0)

xdiff_string_patch — 文字列に unified diff 形式のパッチを適用する

### 説明

string xdiff_string_patch ( string `$str` , string `$patch` [, int `$flags` [, string `&$error` ]] )

ある文字列 `str` に、unified 形式のパッチ文字列 `patch` を適用してその結果を返します。 `patch` は、 xdiff_file_diff()/xdiff_string_diff() 関数で作成した unified diff 形式でなければなりません。 オプションのパラメータ `flags` で、操作モードを指定します。パッチが拒否された部分については、 もし `error` を指定していればそこに保存されます。

### パラメータ

`str`

  元の文字列。

`patch`

  unified 形式のパッチ文字列。 xdiff_string_diff() 関数や xdiff_file_diff() 関数、 あるいは互換性のあるツールで作成したものでなければなりません。

`flags`

  `flags` は `XDIFF_PATCH_NORMAL` (デフォルト。通常のパッチ) あるいは `XDIFF_PATCH_REVERSE` (逆パッチ) のいずれかです。

  バージョン 1.5.0 以降では、バイナリ OR を使用して `XDIFF_PATCH_IGNORESPACE` フラグを有効にすることもできます。

`error`

  これを指定すると、パッチを拒否された部分がここに保存されます。

### 返り値

パッチ適用後の文字列、あるいはエラー時に `FALSE` を返します。

### 例

例1 xdiff_string_patch() の例

以下のコードは、ある記事に対して変更を適用します。

`<?php
$old_article = file_get_contents('./old_article.txt');
$diff = $_SERVER['patch']; /* だれかが html フォームからパッチを投稿したとしましょう */
$errors = '';
$new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors);
if (is_string($new_article)) {
echo "新しい記事:\n";
echo $new_article;
}
if (strlen($errors)) {
echo "Rejects: \n";
echo $errors;
}
?>`

### 参考

- xdiff_string_diff() - 2 つの文字列の unified diff を作成する

xdiff_string_patch_binary
xdiff_string_rabdiff
xdiff 関数
PHP Manual