Start · Sprachen · PHP · Referenz · wddx_deserialize

wddx_deserialize

Funktion

Deserialisiert ein WDDX-Paket und konvertiert dessen Inhalt zurück in eine PHP-Variable.

seit PHP 4.0.0 Kategorie: xml

Signatur

wddx_deserialize(string $packet): mixed

Beschreibung

wddx_deserialize() nimmt einen WDDX-Paket-String entgegen und wandelt ihn in die entsprechende PHP-Datenstruktur um. WDDX (Web Distributed Data eXchange) ist ein XML-basiertes Format, das den Datenaustausch zwischen verschiedenen Programmiersprachen und Plattformen ermöglicht. Die Funktion analysiert das übergebene XML und gibt je nach Inhalt einen skalaren Wert, ein Array oder ein Objekt zurück.

Typische Anwendungsfälle sind das Einlesen von WDDX-Daten, die von einem anderen System (z. B. ColdFusion, Perl) erzeugt wurden, sowie das Wiederherstellen von Daten, die zuvor mit wddx_serialize_value() oder wddx_serialize_vars() serialisiert wurden.

Wichtig: Die WDDX-Erweiterung gilt als veraltet und wurde in PHP 7.4 als deprecated markiert sowie in PHP 8.0 vollständig entfernt. Für neue Projekte sollten moderne Alternativen wie json_encode()/json_decode() oder serialize()/unserialize() verwendet werden.

Die Funktion benötigt die libexpat-Bibliothek zur XML-Verarbeitung und ist nur verfügbar, wenn PHP mit WDDX-Unterstützung kompiliert wurde.

Parameter

Name Typ Default Beschreibung
$packet Pflicht string Ein gültiger WDDX-Paket-String im XML-Format, wie er z. B. von wddx_serialize_value() erzeugt wird.

Rückgabewert

Typ
mixed
Beschreibung
Gibt die deserialisierte PHP-Variable zurück. Der Typ hängt vom Inhalt des WDDX-Pakets ab: ein String, eine Zahl, ein Array oder ein Objekt. Im Fehlerfall (ungültiges XML oder fehlerhaftes Paket) wird false zurückgegeben.

Beispiele

Einfache Deserialisierung eines WDDX-Pakets

<?php
// Ein zuvor serialisiertes WDDX-Paket (z. B. aus einer Datei oder Netzwerkantwort)
$packet = wddx_serialize_value(['name' => 'Max Mustermann', 'alter' => 30], 'Benutzerdaten');
echo "Paket: " . $packet . "\n";

// Deserialisierung zurück in ein PHP-Array
$data = wddx_deserialize($packet);
echo "Name: " . $data['name'] . "\n";
echo "Alter: " . $data['alter'] . "\n";
Paket: <wddxPacket version='1.0'><header comment='Benutzerdaten'/><data><struct><var name='name'><string>Max Mustermann</string></var><var name='alter'><number>30</number></var></struct></data></wddxPacket> Name: Max Mustermann Alter: 30

Deserialisierung eines WDDX-Pakets aus einer externen Quelle

<?php
// Beispielhaftes WDDX-Paket, das von einem externen System empfangen wurde
$wddxString = "<wddxPacket version='1.0'><header/><data><string>Hallo Welt</string></data></wddxPacket>";

$result = wddx_deserialize($wddxString);

if ($result === false) {
    echo "Fehler beim Deserialisieren des WDDX-Pakets.\n";
} else {
    echo "Ergebnis: " . $result . "\n";
}
Ergebnis: Hallo Welt

// Wichtig · Fallstricke

Deprecation: wddx_deserialize() wurde in PHP 7.4 als veraltet (deprecated) markiert und in PHP 8.0 entfernt. Der Einsatz in modernen Projekten ist daher nicht empfehlenswert.

Sicherheitshinweis: Das Deserialisieren von Daten aus nicht vertrauenswürdigen Quellen birgt erhebliche Sicherheitsrisiken. Ein manipuliertes WDDX-Paket könnte unerwartete Objektstrukturen erzeugen. Eingehende WDDX-Daten sollten stets validiert werden, bevor sie deserialisiert werden.

Die Funktion steht nur zur Verfügung, wenn PHP mit der WDDX-Erweiterung (--enable-wddx) und der libexpat-Bibliothek kompiliert wurde. Auf vielen modernen Systemen ist diese Erweiterung nicht mehr standardmäßig aktiviert.