Simplexml_load_file错误

时间:2017-06-08 16:45:48

标签: php xml-parsing simplexml

我正在试图用PHP解析这个地址

$url = 'http://pubapi.yp.com/search-api/search/devapi/search?searchloc=91203&term=pizza&format=xml&sort=distance&radius=5&listingcount=10&key=t266jc29dx' ;
$x1 = simplexml_load_file($url);

但这是我一直在想的事情

  

警告:   使用simplexml_load_file(http://pubapi.yp.com/search-api/search/devapi/search?searchloc=91203):   无法打开流:HTTP请求失败! HTTP / 1.1 500内部   服务器错误...

正如您所看到的,我只获取了部分网址参数。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

With some quick searching on how to retrieve XML via cURL这就是我检索和解析XML所做的。

我在评论中提到的一个重要原因是你不能将URL直接传递到带有&符号(&)的simple_xml_load_string函数中。它是XML格式的一个代表实体的字符。

<?php

function get_xml_from_url($url){
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

    $xmlstr = curl_exec($ch);
    curl_close($ch);

    return $xmlstr;
}

$url = 'http://pubapi.yp.com/search-api/search/devapi/search?searchloc=91203&term=pizza&format=xml&sort=distance&radius=5&listingcount=10&key=t266jc29dx';
$contents = get_xml_from_url($url);

$xml = simplexml_load_string($contents);

echo '<pre>';
print_r($xml);
echo '</pre>';
?>