Signatur
Beschreibung
xdiff_string_patch_binary ist ein Alias der Funktion xdiff_string_bpatch und wendet einen binären xdiff-Patch auf einen als String übergebenen Originalinhalt an. Das Ergebnis wird als neuer String zurückgegeben, ohne dass Dateien auf dem Dateisystem benötigt werden.
Die Funktion ist Teil der PECL-Erweiterung xdiff und arbeitet ausschließlich im Arbeitsspeicher. Sie eignet sich besonders gut, wenn sowohl der Ausgangsinhalt als auch der Patch bereits als PHP-Strings vorliegen – etwa aus Datenbank-Blobs, Netzwerkübertragungen oder vorherigen xdiff-Operationen.
Der Patch muss zuvor mit xdiff_string_bdiff (bzw. xdiff_string_bdiff_fromstring) oder den entsprechenden Datei-Varianten erzeugt worden sein. Für textbasierte Patches (unified diff) steht stattdessen xdiff_string_patch zur Verfügung.
Da es sich um einen reinen Alias handelt, ist das Verhalten identisch mit xdiff_string_bpatch. In neuem Code empfiehlt es sich, direkt xdiff_string_bpatch zu verwenden, da Aliasse in künftigen Versionen entfernt werden können.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $str Pflicht | string | Der Originalinhalt als String, auf den der binäre Patch angewendet werden soll. | |
| $patch Pflicht | string | Der binäre Patch als String, der zuvor mit xdiff_string_bdiff oder einer verwandten Funktion erzeugt wurde. |
Rückgabewert
false zurückgegeben.Beispiele
Binären Patch erstellen und anwenden
<?php
// Originalinhalt und neue Version
$original = "Hallo Welt!\nDies ist Version 1.\n";
$modified = "Hallo Welt!\nDies ist Version 2.\n";
// Binären Patch erzeugen
$patch = xdiff_string_bdiff($original, $modified);
// Patch mit dem Alias anwenden
$result = xdiff_string_patch_binary($original, $patch);
if ($result !== false) {
echo $result;
} else {
echo "Fehler beim Anwenden des Patches.";
}
Patch auf aus Datenbank gelesenen Inhalt anwenden
<?php
// Simulierter Abruf aus einer Datenbank (BLOB-Felder)
$pdo = new PDO('sqlite::memory:');
// ... Tabelle befüllen und Daten lesen ...
$originalBlob = file_get_contents('/var/data/document_v1.bin');
$patchBlob = file_get_contents('/var/data/document.patch');
$patched = xdiff_string_patch_binary($originalBlob, $patchBlob);
if ($patched !== false) {
file_put_contents('/var/data/document_v2.bin', $patched);
echo "Dokument erfolgreich gepatcht und gespeichert.";
} else {
echo "Patch konnte nicht angewendet werden.";
}
// Wichtig · Fallstricke
Alias-Hinweis: xdiff_string_patch_binary ist ein direkter Alias von xdiff_string_bpatch. Da Aliasse in zukünftigen PHP- oder PECL-Versionen ohne Vorwarnung entfernt werden können, wird empfohlen, in neuem Code stets xdiff_string_bpatch direkt zu verwenden.
PECL-Abhängigkeit: Die xdiff-Erweiterung ist nicht im PHP-Kern enthalten und muss separat über PECL installiert werden (pecl install xdiff). Auf vielen Shared-Hosting-Umgebungen steht sie nicht zur Verfügung.
Binär vs. Text: Diese Funktion ist ausschließlich für binäre Patches geeignet, die mit xdiff_string_bdiff erzeugt wurden. Für textbasierte (unified) Patches muss xdiff_string_patch verwendet werden.