2017-04-26 37 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);