PHP 日本會議 2024

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

XML-RPC 方法傳回的 XML 回應。

encoding

iconv 支援的輸入編碼。

傳回值

根據 XML-RPC 方法傳回的回應,傳回陣列、整數、字串或布林值。

範例

請參閱 xmlrpc_encode_request() 的範例。

參見

新增註解

使用者貢獻的註解 6 則註解

15
Alwin
8 年前
請注意,從 libxml 2.7.9+ 開始,XML-RPC 回應的大小限制為 10MB。

如果回應較大,xmlrpc_decode 只會傳回 NULL。

目前沒有辦法像其他 xml 函式那樣覆寫此限制 (LIBXML_PARSEHUGE)
2
phil dot berry at elise-international dot net
13 年前
請確保伺服器沒有傳回第一個字元為空格的字串,這在 5.3.3 版中會失敗,而函式會傳回 null(但在 5.2 中似乎沒問題)。

很容易透過修剪回應資料來解決

<?php xmlrpc_decode( trim($response) ); ?>
2
hfuecks at pinkgoblin dot com
22 年前
將此函式與 XML-RPC 用戶端搭配使用,將伺服器回應解碼為原生 PHP 變數。它會自動將回應的 XML-RPC 資料類型轉換為對應的 PHP 類型。

此函式只有在收到的 XML 格式有任何問題時才會傳回 false。

HTTP 回應標頭需要用類似以下的方法剝離:

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

$phpvars = xmlrpc_decode ($xml);
?>
0
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>

如果您的伺服器未正確編碼回應,您可能必須在剖析前處理回應。
-1
ryon dot sherman at gmail dot com
15 年前
xmlrpc_decode() 無法剖析 64 位元 (i8) 整數。
使用字串取代來解決此問題

<?php

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

$decoded_xml = xmlrpc_decode($xml);

?>
-2
carmageddon at gmail dot com
11 年前
顯然 xmlrpc_decode (或 php) 有個小問題,會重新格式化這個輸入:<value><double>0.000000</double></value>

為雙精度數字 0。

為了解決這個問題,請使用:number_format($val, 2);
輸出將會是 0.00
To Top