全部, 我試圖讓用戶搜索歌曲。假設用戶正在搜索傑克約翰遜,並且我想在傑克約翰遜的iTunes上顯示所有歌曲。我知道我需要構建一個URL像下面這樣:搜索iTunes音樂庫的搜索條件通過API
從編程persepective,我怎麼會發這個蘋果?如果我將該URL複製到我的瀏覽器中,我會得到一些結果。根據這些結果,我如何解析這些結果以便我可以將它們顯示給用戶?我想使用JSON,cURL,兩者的組合嗎?什麼是最有效的方式來做到這一點?
任何幫助在這裏將不勝感激!
全部, 我試圖讓用戶搜索歌曲。假設用戶正在搜索傑克約翰遜,並且我想在傑克約翰遜的iTunes上顯示所有歌曲。我知道我需要構建一個URL像下面這樣:搜索iTunes音樂庫的搜索條件通過API
從編程persepective,我怎麼會發這個蘋果?如果我將該URL複製到我的瀏覽器中,我會得到一些結果。根據這些結果,我如何解析這些結果以便我可以將它們顯示給用戶?我想使用JSON,cURL,兩者的組合嗎?什麼是最有效的方式來做到這一點?
任何幫助在這裏將不勝感激!
如果我理解正確的話,你想要什麼,也許是這樣的:
<?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);
您將使用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
現在是一個數組,其中包含返回的所有信息。
謝謝,你有一個關於如何讀取基於問題中的搜索字符串返回的json結果的例子嗎? – user1048676
@ user1048676,在那裏,我更新了我的答案。如果您還有其他問題,請告訴我。 – mowwwalker
必須通過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;
}
我試圖用foreach循環做到這一點,但它不斷給我一個錯誤。我試過這段代碼: $ json = file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song'); $ itunes_results = json_decode($ json,true); foreach($ itunes_results-> results as $ results) { echo「{$ results-> artistName} \ n」; } 關於爲什麼這不起作用的任何想法? – user1048676
@ZulkaeryBasurl這正是我正在尋找的!非常感謝你! – user1048676
我如何從itune下載歌曲在php中 – Ravi