2017-04-26 99 views
1
$url = "myurl"; 

    $ch = curl_init($url); 

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
    $passwordStr = "$this->username:$this->password"; 
    curl_setopt($ch, CURLOPT_USERPWD, $passwordStr); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, 
     array("Content-type: application/atom+xml")); 

    $successCode = 200; 

    $result = curl_exec($ch); 

curl_exec從myurl獲取xml數據,如預期的那樣,但只是在輸出緩衝區中回顯它。 $return的值是一個簡單的布爾值。相反,我希望它返回所獲得的XML數據作爲一個數組或任何其他的php對象,我可以處理(無需做任何繁瑣的ob_start輸出緩衝)。這是可能的還是有任何解決方法?curl在php中 - 如何獲得數組或其他資源獲得的數據

回答

1

您將需要使用CURLOPT_RETURNTRANSFER選項來返回您的回覆而不是echoing它。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

之後,你可能需要使用SimpleXMLElement你的XML解析爲一個數組:

$result = curl_exec($ch); 
$resultArray = new SimpleXMLElement($result); 

的SimpleXMLElement將返回SimpleXMLElement對象的實例。


使用xml_parse_into_struct解析你的XML到一個數組的另一種選擇:

$result = curl_exec($ch); 
$parser = xml_parser_create(); 
xml_parse_into_struct($parse, $result, $values, $indexes); 
xml_parser_free($parser); 

// then you can access your array values using $values,$indexes variables 
print_r($values);