2017-06-08 23 views
0

私はPHPSimplexml_load_fileエラー

$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); 

でこのアドレスを解析するtriyingしかし、ここで私は

警告得続けるものだよ: simplexml_load_file(http://pubapi.yp.com/search-api/search/devapi/search?searchloc=91203): は、ストリームをオープンに失敗しました:HTTPリクエストを失敗! HTTP/1.1 500内部 サーバーエラー...

ご覧のとおり、私はURLパラメータの一部しか取得していません。

お手伝いできますか?

+1

文字列のアンパサンドを解析しようとしているため、エラーが発生します。最初に変数にurlの内容をスローし、返されたXMLを処理します。 – Rimble

答えて

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>'; 
?> 
関連する問題