Signatur
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
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";
}
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";
}
// 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.