使用PHP和输出值从Discogs API获取
我使用以下代码从discogs的特定记录中获取数据:使用PHP和输出值从Discogs API获取,php,curl,discogs-api,Php,Curl,Discogs Api,我使用以下代码从discogs的特定记录中获取数据: //initialize the session $ch = curl_init(); //Set the User-Agent Identifier curl_setopt($ch, CURLOPT_USERAGENT, 'MYAPPNAME/0.1 +http://ymysite.com'); //Set the URL of the page or file to download. curl_setopt($ch, CURLOPT
//initialize the session
$ch = curl_init();
//Set the User-Agent Identifier
curl_setopt($ch, CURLOPT_USERAGENT, 'MYAPPNAME/0.1 +http://ymysite.com');
//Set the URL of the page or file to download.
curl_setopt($ch, CURLOPT_URL, $url);
//Ask cURL to return the contents in a variable instead of simply echoing them
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Execute the curl session
$output = curl_exec($ch);
//close the session
curl_close ($ch);
我可以回显$output,这将给我一个非常复杂的输出:
{“风格”:[“蓝调摇滚”、“摇滚乐”],“视频”:[{“持续时间”:200,“嵌入”:真实,“标题”:“滚石-街头斗士”,“描述”:“滚石-街头斗士”,“uri”:“},{“持续时间”:2457,“嵌入”:真实,“标题”:“滚石-乞丐宴会全套专辑(单乙烯基混音)”,“描述”:“滚石乐队-乞丐宴会全套专辑(单乙烯基混音)”,“uri”:“}],“系列”:[],“标签”:[{“资源”\u url:““实体”;“类型”;“1”,“catno:“SKL 4955”,“id”:5320,“名称”;“Decca”}]…还有更多
例如,我如何使用PHP从“styles”中获取信息,使其输出“Blues Rock,Rock&Roll”?也许我也想从“description”中获取信息,以输出“the Rolling Stones-Begars宴会完整专辑(单乙烯基混音)”
问候
约翰
<?php
$output = '{"styles": ["Blues Rock", "Rock & Roll"], "videos": [{"duration": 200, "embed": true, "title": "The Rolling Stones - Street Fighting Man", "description": "The Rolling Stones - Street Fighting Man", "uri": "http://www.youtube.com/watch?v=qUO8ScYVeDo"}, {"duration": 2457, "embed": true, "title": "The Rolling Stones - Beggars Banquet FULL ALBUM (mono vinyl mix)", "description": "The Rolling Stones - Beggars Banquet FULL ALBUM (mono vinyl mix)", "uri": "http://www.youtube.com/watch?v=sRu88xttBrA"}], "series": [], "labels": [{"resource_url": "http://api.discogs.com/labels/5320", "entity_type": "1", "catno": "SKL 4955", "id": 5320, "name": "Decca"}]...There is more...';
function textParser($text, $css_block_name){
$end_pattern = '], "';
switch($css_block_name){
# Add your pattern here to grab any specific block of text
case 'description';
$end_pattern = '", "';
break;
}
# Name of the block to find
$needle = "\"{$css_block_name}\":";
# Find start position to grab text
$start_position = stripos($text, $needle) + strlen($needle);
$text_portion = substr($text, $start_position, stripos($text, $end_pattern, $start_position) - $start_position + 1);
$text_portion = str_ireplace("[", "", $text_portion);
$text_portion = str_ireplace("]", "", $text_portion);
return $text_portion;
}
$blockStyle = textParser($output, 'styles');
echo $blockStyle. '<br/>';
$blockDescription = textParser($output, 'description');
echo $blockDescription. '<br/>';