2016-07-21 20 views
0
$song = "The Buzzcocks - Orgasm Addict"; 
$songeach = explode("-", $song); 
$artist = trim($songeach[0]); 
$song = trim($songeach[1]); 
echo $artist; 
      //echos 'The Buzzcocks' 
echo $song; 
      //echos 'Orgasm Addict' 

$lyricxml1 = simplexml_load_file('http://api.chartlyrics.com/apiv1.asmx/SearchLyric?artist='.$artist.'&song='.$song.''); 
$lyricchecksum2 = $lyricxml1->SearchLyricResult[0]->LyricChecksum; 
$lyricid = $lyricxml1->SearchLyricResult[0]->LyricId; 

echo $lyricchecksum2; 
      //echos 'c58a88a5cd5550b2793a408d17193af6' 
echo $lyricid; 
      //echos '5497' 

目前爲止所有的優秀和正確的。simplexml_load_file未能打開流E_WARNING:type 2

但後來有一次我來到這裏

$lyricxml2 = simplexml_load_file('http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId='.$lyricid.'&lyricCheckSum='.$lyricchecksum2.''); 
print_r($lyricxml2); 

我收到此錯誤:

E_WARNING : type 2 -- simplexml_load_file(http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId=5497&lyricCheckSum=c58a88a5cd5550b2793a408d17193af6): failed to open stream: HTTP request failed! -- at line 15 
E_WARNING : type 2 -- simplexml_load_file(): I/O warning : failed to load external entity "http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId=5497&lyricCheckSum=c58a88a5cd5550b2793a408d17193af6" -- at line 15 

即使URL/xml文件是正確的(手動瀏覽器作品) http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId=5497&lyricCheckSum=c58a88a5cd5550b2793a408d17193af6

並且是完全相同的格式$ lyricxml1(回聲輸出:http://api.chartlyrics.com/apiv1.asmx/SearchLyric?artist=The Buzzcocks & song = Orgasm Addict)

+0

你嘗試過多次,他們都失敗了嗎?似乎只是一次失敗的請求。我複製了您的確切代碼,我無法重現任何錯誤。 – ebildude123

+0

我無法重現您的錯誤。當我使用第二個url運行'simplexml_load_file(...)'時,一切正常。 – BeetleJuice

+0

嗯..哇。是的,我已經在本地主機上至少嘗試了十幾次,並且我也嘗試了phpfiddle.net,並且我總是得到與第二個xml文件相同的錯誤。我會嘗試在現場主持人。 – bbruman

回答

1

您可以嘗試使用file_get_contents()加載文件,然後使用simplexml_load_string()將其變爲對象。

如果您正在加載外部文件,例如您的代碼示例中,您可以使用curl來獲取數據,然後使用simplexml_load_string()作爲響應將其轉換爲對象。