2012-01-23 61 views
1

全部, 我試圖讓用戶搜索歌曲。假設用戶正在搜索傑克約翰遜,並且我想在傑克約翰遜的iTunes上顯示所有歌曲。我知道我需要構建一個URL像下面這樣:搜索iTunes音樂庫的搜索條件通過API

http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song

從編程persepective,我怎麼會發這個蘋果?如果我將該URL複製到我的瀏覽器中,我會得到一些結果。根據這些結果,我如何解析這些結果以便我可以將它們顯示給用戶?我想使用JSON,cURL,兩者的組合嗎?什麼是最有效的方式來做到這一點?

任何幫助在這裏將不勝感激!

回答

4

如果我理解正確的話,你想要什麼,也許是這樣的:

<?php 
if(isset($_POST['term'])) 
{ 
    $term = urlencode($_POST['term']); // user input 'term' in a form 
    $json = file_get_contents('http://itunes.apple.com/search?term='.$term.'&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song');  
    $array = json_decode($json, true); 

    foreach($array['results'] as $value) 
    { 
     echo '<p>'; 
     echo $value['artistName'].'<br />'; 
     echo $value['artistLinkUrl'].'<br />'; 
     echo $value['primaryGenreName']; 
     echo '</p>'; 
    } 
} 
?> 

<form method="post"> 
    <input type="text" name="term" /><input type="submit" value="Go" /> 
</form> 

更多$數組值,嘗試print_r($array);

+0

我試圖用foreach循環做到這一點,但它不斷給我一個錯誤。我試過這段代碼: $ json = file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mi​​x,song'); $ itunes_results = json_decode($ json,true); foreach($ itunes_results-> results as $ results) { echo「{$ results-> artistName} \ n」; } 關於爲什麼這不起作用的任何想法? – user1048676

+1

@ZulkaeryBasurl這正是我正在尋找的!非常感謝你! – user1048676

+0

我如何從itune下載歌曲在php中 – Ravi

1

您將使用file_get_contents並解析結果與json_decode

$js= json_decode(file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song')); 

$js現在是一個數組,其中包含返回的所有信息。

+0

謝謝,你有一個關於如何讀取基於問題中的搜索字符串返回的json結果的例子嗎? – user1048676

+0

@ user1048676,在那裏,我更新了我的答案。如果您還有其他問題,請告訴我。 – mowwwalker

1

必須通過HTTP進行的請求。 JSON只是它返回的數據的一種格式,而不是一種檢索它的方法。

有很多方法可以獲取該數據。

最簡單的選擇就是使用file_get_contents,如果你的服務器有fopen啓用包裝(它可能會)。

$data = file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song'); 

捲曲也使用喜歡的東西的一個選項:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

一旦檢索該網頁的內容,反序列化很容易,只要你安裝了JSON擴展。如果您使用PHP 5.2.0+,那麼它是核心的一部分。否則,您需要安裝PECL模塊。 See the PHP manual page on the extension for more information.

$response = json_decode($data); 
var_dump($response); 

反序列化的數據是一個對象。你可以像這樣使用它:

foreach ($response->results as $result) 
{ 
    echo "Artist: ".$result->artistName."<br />".PHP_EOL; 
}