Start · Sprachen · PHP · Referenz · xdiff_string_diff_binary

xdiff_string_diff_binary

Funktion

Alias von <code>xdiff_string_bdiff</code>: Erzeugt einen binären Diff zweier Strings im Speicher.

seit PHP 1.5.0 Kategorie: misc

Signatur

xdiff_string_diff_binary(string $old_data, string $new_data): string|false

Beschreibung

xdiff_string_diff_binary ist ein Alias der Funktion xdiff_string_bdiff und erzeugt einen binären Patch, der die Unterschiede zwischen zwei übergebenen Strings beschreibt. Das Ergebnis ist ein binäres Diff-Format, das sich zum Patchen beliebiger Binär- oder Textdaten eignet.

Im Gegensatz zu textbasierten Diffs (xdiff_string_diff) arbeitet diese Funktion byte-weise und ist damit auch für Binärdateien geeignet, z. B. für Bilder, komprimierte Archive oder andere nicht-textuelle Daten.

Der erzeugte Patch kann mit xdiff_string_patch_binary wieder auf den Originalstring angewendet werden, um den neuen String zu rekonstruieren. Dies ist besonders nützlich in Versionierungssystemen oder bei der Übertragung von Änderungen in Protokollen mit minimalem Overhead.

Hinweis: Diese Funktion erfordert die PECL-Erweiterung xdiff. Sie ist seit xdiff 1.5.0 als Alias von xdiff_string_bdiff verfügbar.

Parameter

Name Typ Default Beschreibung
$old_data Pflicht string Der ursprüngliche (alte) String, der als Basis für den Diff dient.
$new_data Pflicht string Der neue String, dessen Unterschiede zum alten String im Diff erfasst werden sollen.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den binären Diff als String zurück, der die Unterschiede zwischen old_data und new_data enthält. Im Fehlerfall wird false zurückgegeben.

Beispiele

Binären Diff zweier Strings erzeugen und anwenden

<?php
$old = "Hallo Welt! Dies ist Version 1.";
$new = "Hallo Welt! Dies ist Version 2.";

// Binären Diff erzeugen
$patch = xdiff_string_diff_binary($old, $new);

if ($patch !== false) {
    echo "Patch erfolgreich erzeugt. Länge: " . strlen($patch) . " Bytes\n";

    // Patch auf den alten String anwenden
    $result = xdiff_string_patch_binary($old, $patch);

    if ($result === $new) {
        echo "Patch erfolgreich angewendet. Ergebnis: " . $result . "\n";
    }
} else {
    echo "Fehler beim Erzeugen des Patches.\n";
}
Patch erfolgreich erzeugt. Länge: 44 Bytes Patch erfolgreich angewendet. Ergebnis: Hallo Welt! Dies ist Version 2.

Binären Diff für Binärdaten (z. B. serialisierte Daten)

<?php
$old_data = serialize(['version' => 1, 'data' => str_repeat('\x00', 100)]);
$new_data = serialize(['version' => 2, 'data' => str_repeat('\x00', 100)]);

$patch = xdiff_string_diff_binary($old_data, $new_data);

if ($patch !== false) {
    echo "Binärer Diff erzeugt. Patch-Größe: " . strlen($patch) . " Bytes\n";
    $restored = xdiff_string_patch_binary($old_data, $patch);
    echo "Rekonstruktion erfolgreich: " . ($restored === $new_data ? 'Ja' : 'Nein') . "\n";
}
Binärer Diff erzeugt. Patch-Größe: 52 Bytes Rekonstruktion erfolgreich: Ja

// Wichtig · Fallstricke

Alias: xdiff_string_diff_binary ist identisch mit xdiff_string_bdiff. Es wird empfohlen, direkt xdiff_string_bdiff zu verwenden, da Aliase in zukünftigen Versionen entfernt werden können.

Die Funktion erfordert die PECL-Erweiterung xdiff, die nicht standardmäßig in PHP enthalten ist. Sie muss separat installiert werden (pecl install xdiff).

Der erzeugte binäre Patch ist nicht kompatibel mit dem textbasierten Diff-Format von xdiff_string_diff. Zum Anwenden muss zwingend xdiff_string_patch_binary verwendet werden.