xmlrpc_decode
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
xmlrpc_decode — 将 XML 解码为原生 PHP 类型
说明
警告
此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担。
参数
xml
-
XMLRPC 方法返回的 XML 响应。
encoding
-
iconv 支持的输入编码。
返回值
根据 XMLRPC 方法的响应返回数组、整数、字符串或布尔值。
示例
参阅 xmlrpc_encode_request() 示例。
参见
- xmlrpc_encode_request() - 为方法请求生成 XML
- xmlrpc_is_fault() - Determines if an array value represents an XMLRPC fault
+添加备注
用户贡献的备注 6 notes
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)
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) ); ?>
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);
?>
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 & b</string></value>
</param>
</params>
</methodResponse>
If your server does not encode responses properly, you may have to process responses before parse.
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);
?>
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
备份地址:http://www.lvesu.com/blog/php/function.xmlrpc-decode.php