PHP 8.4.2 Released!

xmlrpc_decode

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_decodeDecodifica XML nei tipi nativi di PHP

Descrizione

xmlrpc_decode(string $xml, string $encoding = "iso-8859-1"): mixed
Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

xml

Risposta XML restituida dal metodo XMLRPC.

encoding

La codifica di input supportata da iconv.

Valori restituiti

Può restituire un array, o un integer, o una stringa, o un boolean i base alla risposta restituita dal metodo XMLRPC.

Esempi

Vedere l'esempio di xmlrpc_encode_request().

Vedere anche:

add a note

User Contributed Notes 6 notes

up
14
Alwin
8 years ago
Note that from libxml 2.7.9+ there is a limit of 10MB for the XML-RPC response.

If the response is larger, xmlrpc_decode will simply return NULL.

There is currently no way to override this limit like we can with the other xml functions (LIBXML_PARSEHUGE)
up
2
hfuecks at pinkgoblin dot com
22 years ago
Use this with an XML-RPC client to decode a server response into native PHP variables. It will automatically translate the response XML-RPC data types into their PHP equivalents.

This function will return only false is there is any problem with format of the XML it receives.

The HTTP response header will need to be stripped off with something like;

<?php
$xml
=(substr($response, strpos($response, "\r\n\r\n")+4));

$phpvars = xmlrpc_decode ($xml);
?>
up
1
phil dot berry at elise-international dot net
13 years ago
Make sure the server isn't returning a string with a space for the first character, this fails in version 5.3.3 and the function returns null (though seems to be ok in 5.2).

Easily sorted by trimming the response data:

<?php xmlrpc_decode( trim($response) ); ?>
up
0
david dot bachelart at polytechnique dot org
20 years ago
Be careful with encodings, the xmlrpc-decode function is rather strict. For example, the following response parse returns NULL :

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>a & b</string></value>
</param>
</params>
</methodResponse>

You should use entities :
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>a &amp; b</string></value>
</param>
</params>
</methodResponse>

If your server does not encode responses properly, you may have to process responses before parse.
up
-2
carmageddon at gmail dot com
11 years ago
Apparently there is a slight problem with xmlrpc_decode (or php) which re-formats this input: <value><double>0.000000</double></value>

As the double number 0.

To get around it, use: number_format($val, 2);
Output would be 0.00
up
-2
ryon dot sherman at gmail dot com
15 years ago
64 bit (i8) integers are not parsed by xmlrpc_decode().
Use a string replacement to work around this:

<?php

$xml
= str_replace('i8>', 'i4>', $xml);

$decoded_xml = xmlrpc_decode($xml);

?>
To Top