php youtube json decode

Я попытался использовать JSON-декодирование, чтобы получить фид API-интерфейса youtube. Однако, когда я вставляю результат JSON в http://www.jsonlint.com/ я заметил что-то вроде

 "media$group": { "media$category": [ 

К сожалению, некоторые символы отклоняются php. Вот мой код, я попытался удалить этот символ $ , но, возможно, не удался. Как я могу это решить?

 $url = 'http://gdata.youtube.com/feeds/api/videosq=football&orderby=published&v=2&alt=json'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $url); $body1 = curl_exec($ch); $body = str_replace('$','', $body1); curl_close($ch); $data = json_decode($body); foreach ($data->feed->entry as $result) { ... } 

Ваша проблема заключается в использовании идентификаторов PHP для доступа к содержимому. Простейшим решением здесь было бы получить массив вместо объекта:

 $data = json_decode ( $json , $assoc = true ); 

Это позволяет получить доступ к полям:

 echo $result['media$group']['media$description']; 

Если вы хотите сохранить синтаксис объекта, это возможно с помощью этого kludge:

 echo $result->{'media$group'}->{'media$category'}; 

(Но массивы более безопасны здесь. Вы не получите фатальную ошибку, если формат и свойства отсутствуют.)

Эта работа:

 <?php $url = 'http://gdata.youtube.com/feeds/api/videos?q=football&orderby=published&v=2&alt=json'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $url); $body1 = curl_exec($ch); $body = str_replace('$','', $body1); curl_close($ch); $data = json_decode($body); foreach ($data->feed->entry as $result) { var_dump($result); } ?>