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

flagsXDIFF_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