xmlrpc_decode

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

xmlrpc_decode将 XML 解码为本地 PHP 类型

描述

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

此函数为 实验性。此函数的行为、名称和周围的文档可能会在 PHP 的未来版本中发生更改,恕不另行通知。使用此函数的风险自负。

参数

xml

XMLRPC 方法返回的 XML 响应。

encoding

iconv 支持的输入编码。

返回值

根据 XMLRPC 方法返回的响应,返回数组、整数、字符串或布尔值。

示例

请参阅 xmlrpc_encode_request() 的示例。

参见

添加笔记

用户贡献笔记 6 个笔记

Alwin
8 年前
请注意,从 libxml 2.7.9+ 开始,XML-RPC 响应的限制为 10MB。

如果响应更大,xmlrpc_decode 将简单地返回 NULL。

目前无法像其他 xml 函数(LIBXML_PARSEHUGE)那样覆盖此限制。
phil dot berry at elise-international dot net
12 年前
确保服务器没有返回第一个字符为空格的字符串,这在 5.3.3 版本中会失败,函数返回 null(但在 5.2 中似乎没问题)。

可以通过修剪响应数据轻松解决

<?php xmlrpc_decode( trim($response) ); ?>
hfuecks at pinkgoblin dot com
21 年前
将此与 XML-RPC 客户端一起使用,将服务器响应解码为本地 PHP 变量。它会自动将响应 XML-RPC 数据类型转换为其 PHP 等效项。

如果接收到的 XML 格式有任何问题,此函数只会返回 false。

HTTP 响应头需要用类似以下内容的内容剥离;

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

$phpvars = xmlrpc_decode ($xml);
?>
david dot bachelart at polytechnique dot org
20 年前
注意编码,xmlrpc-decode 函数非常严格。例如,以下响应解析返回 NULL

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

您应该使用实体
<xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>a &amp; b</string></value>
</param>
</params>
</methodResponse>

如果您的服务器没有正确编码响应,您可能需要在解析之前处理响应。
ryon dot sherman at gmail dot com
14 年前
64 位 (i8) 整数不会被 xmlrpc_decode() 解析。
使用字符串替换来解决此问题

<?php

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

$decoded_xml = xmlrpc_decode($xml);

?>
carmageddon at gmail dot com
11 年前
显然,xmlrpc_decode(或 php)存在一个小问题,它会重新格式化此输入:<value><double>0.000000</double></value>

作为双精度数 0。

为了解决这个问题,请使用:number_format($val, 2);
输出将为 0.00
To Top