Extragere Date din sir cu JSON in PHP

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
MelecaCristian
Mesaje:176

Extragere Date din sir cu JSON in PHP

Buna,
Am urmatorul script json(php) si doresc extragerea datelor de la url-ul acesta:

Cod: Selectaţi tot

youtube-mp3.org/api/itemInfo/?video_id=6UjfTKHQ4vo&adloc=&r={{datetime}}
Sa returneze rezultat de tip lista:

Cod: Selectaţi tot

Melodia: NUME MELODIE
COD : 31902321099231912399 (este doar un exemplu)
Imagine: (Poza)
Am incercat sa folosesc scriptul meu de mai jos dar nu stiu unde am gresit :(

Cod: Selectaţi tot

<?php
$url = 'http://www.youtube-mp3.org/api/itemInfo/?video_id=6UjfTKHQ4vo&adloc=&r={{datetime}}';
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach($json['info']['title'] as $item) {
    print 'Melodia: ';
    print $item['title'];
    print '<br>';
    print 'Cod: ';
    print $item['h'];
    print 'Imagine:';
    print '<br><img src="' . $item['image'][0]['value'] . '" border="0" alt="" />';
    print '<br>';
}
?>
Ma puteti ajuta ... Multumesc mult.
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
Salut
Problema e ca sirul cu datele returnate de acel Youtube Api nu e un format JSON valid, are acel "info =" inaintea obiectului JSON.
Trebuie extras din sir doar subsirul cu formatul JSON valid (cu preg_match() ), apoi, fiindca este doar un singur array, din acest obiet:

Cod: Selectaţi tot

{"title" : "DaOne - povestea noastra (feat. Ewa)", "image" : "http://i.ytimg.com/vi/6UjfTKHQ4vo/default.jpg", "length" : "4", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "http://acef.u.aclst.com/ping.php?video_id=6UjfTKHQ4vo&h=9178", "h" : "a148abf7ef86bab307d50d0d9d6177f0"}
Se pot prelua datele fara foreach().
Merge asa:

Cod: Selectaţi tot

<?php
$url = 'http://www.youtube-mp3.org/api/itemInfo/?video_id=6UjfTKHQ4vo&adloc=&r={{datetime}}';
$content = file_get_contents($url);

if(preg_match('/{(.*?)}/i', $content, $infojson)) {
  $item = json_decode($infojson[0], true);
  print 'Melodia: ';
  print $item['title'];
  print '<br>';
  print 'Cod: ';
  print $item['h'];
  print 'Imagine:';
  print '<br><img src="'. $item['image'] .'" border="0" alt="" />';
  print '<br>';
}

MelecaCristian Mesaje:176
Multumesc mult, merge.
Dar la variabila "h" returneaza alt cod, nush de ce.

E tare ciudat de ex: daca ai observat cand returneaza manual apare asa :
a148abf7ef86bab307d50d0d9d6177f0 (si e ok)

Cand folosesc scriptul apare asa:
ebc58d3bc980eb26fed2ba49a10cc8f7

Deci e cu totul alt cod si nu merge.
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
Am testat scriptul, la mine apare acelasi cod la script ca si in pagina accesata manual, adica asta:
a6d19dd346055c8de74e4642b303a4d3

Dar ieri era altul, se pare ca e varriabil. Oricum, nu tine direct de acest subiect, e codul din datele transmise de Youtube la file_get_contents() si preluat corect cu json_decode().

Subiecte similare