Signatur
Beschreibung
xmlrpc_decode() wandelt einen XML-RPC-formatierten XML-String in den entsprechenden nativen PHP-Datentyp um. Dabei werden XML-RPC-Typen wie <int>, <string>, <boolean>, <array> und <struct> automatisch in ihre PHP-Entsprechungen konvertiert.
Die Funktion ist besonders nützlich, wenn man Antworten eines XML-RPC-Servers verarbeiten möchte, ohne manuell den XML-Baum zu parsen. Das Ergebnis ist direkt als PHP-Variable verwendbar.
Achtung: Die gesamte XMLRPC-Extension (xmlrpc) gilt seit PHP 8.0 als experimentell und wird seit PHP 8.4 als veraltet (deprecated) eingestuft. Für neue Projekte sollte stattdessen eine moderne XML-RPC-Bibliothek wie phpxmlrpc/phpxmlrpc verwendet werden.
Der optionale Parameter $encoding gibt die Zeichenkodierung des übergebenen XML-Strings an. Standardmäßig wird iso-8859-1 angenommen; für moderne Anwendungen empfiehlt sich utf-8.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $xml Pflicht | string | Ein gültiger XML-RPC-kodierter XML-String, der dekodiert werden soll. | |
| $encoding | string | iso-8859-1 | Die Zeichenkodierung des übergebenen $xml-Strings, z. B. 'utf-8' oder 'iso-8859-1'. |
Rückgabewert
int, float, string, bool), ein array (für XML-RPC-Arrays und -Structs) oder null bei einem Fehler sein.Beispiele
Einfachen XML-RPC-Wert dekodieren
<?php
// Ein einfacher XML-RPC-String mit einem Integer-Wert
$xml = '<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><int>42</int></value>
</param>
</params>
</methodResponse>';
$result = xmlrpc_decode($xml, 'utf-8');
var_dump($result);
// Gibt den dekodierten PHP-Integer aus
XML-RPC-Struct als PHP-Array dekodieren
<?php
// Ein XML-RPC-Struct mit mehreren Feldern
$xml = '<?xml version="1.0" encoding="utf-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>name</name>
<value><string>Max Mustermann</string></value>
</member>
<member>
<name>age</name>
<value><int>30</int></value>
</member>
<member>
<name>active</name>
<value><boolean>1</boolean></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>';
$data = xmlrpc_decode($xml, 'utf-8');
echo $data['name'] . PHP_EOL; // Max Mustermann
echo $data['age'] . PHP_EOL; // 30
var_dump($data['active']); // bool(true)
Antwort eines XML-RPC-Servers verarbeiten
<?php
// Simulierte Serverantwort als String
$serverResponse = '<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value><string>Apfel</string></value>
<value><string>Banane</string></value>
<value><string>Kirsche</string></value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>';
$fruits = xmlrpc_decode($serverResponse, 'utf-8');
foreach ($fruits as $fruit) {
echo $fruit . PHP_EOL;
}
// Wichtig · Fallstricke
Deprecation: Die xmlrpc-Extension ist seit PHP 8.0 als experimentell markiert und seit PHP 8.4 als deprecated eingestuft. Sie könnte in einer zukünftigen PHP-Version entfernt werden. Für produktive Anwendungen wird die Verwendung einer externen Bibliothek wie phpxmlrpc/phpxmlrpc empfohlen.
Sicherheit: Der übergebene XML-String sollte aus vertrauenswürdigen Quellen stammen. Unkontrolliertes Parsen von XML aus externen Quellen kann zu Denial-of-Service-Angriffen (z. B. XML-Bomben) oder XXE-Angriffen führen. Es empfiehlt sich, die Eingabe vor dem Dekodieren zu validieren und die Größe zu begrenzen.
Verfügbarkeit: Die Funktion ist nur verfügbar, wenn PHP mit der xmlrpc-Extension kompiliert wurde (entweder eingebaut oder als PECL-Paket). Auf modernen Systemen muss die Extension ggf. explizit installiert werden.