3 回答

TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
在 XML 文檔中發(fā)送 JSON 是一個奇怪的想法,但無論如何。最簡單(明智的方法)是用 SimpleXML 加載它,然后 JSON 只是根節(jié)點的文本......
$xml = simplexml_load_string($result);
echo (string)$xml;
應(yīng)該給
[
{
"CreateDate": "123"
}
]

TA貢獻(xiàn)2003條經(jīng)驗 獲得超2個贊
在 XML 中嵌入 JSON 很奇怪,但 IMO 他的解決方案在假設(shè)輸入簡單的情況下發(fā)揮得有點快和松散。此外,就 PHP 的 XML 庫而言,DOMDocument 和系列往往更易于使用。
$in = <<<_E_
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.com/">[
? ? {
? ? ? ? "foo": "bar"
? ? }
]</string>
_E_;
$doc = new DomDocument();
$doc->loadxML($in);
$json = $doc->getElementsByTagName('string')->item(0)->nodeValue;
$decoded = json_decode($json, true);
var_dump($json, $decoded);
輸出:
string(24) "[
? ? {
? ? ? ? "foo": "bar"
? ? }
]"
array(1) {
? [0]=>
? array(1) {
? ? ["foo"]=>
? ? string(3) "bar"
? }
}

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊
最后,我找到了一個解決方案,如下所示:
public function register() {
$url = 'https://example.com/register';
$post_data="Email=frank@email.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded; charset=utf-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$xml = simplexml_load_string($result,'SimpleXMLElement',LIBXML_NOCDATA);
header('Content-Type: application/json');
$temp = json_decode($xml);
$json = json_encode($temp[0]);
echo $json;
}
它有效;
- 3 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報