Я пытаюсь разобрать json, используя json_decode в php. Он не подходит для URL-адреса, может ли кто-нибудь сказать мне, почему его провал и есть ли альтернатива json_decode в php?
Вот мой код
$url='https://espn.go.com/travel/sports/calendar/getList.json?&xhr=1&date=20121027&type=list&query=null&myTeams='; $html = file_get_html($url); $json=json_decode($html,true);
// json здесь null
file_get_html
– это PHP простой HTML DOM Parser. Not default PHP function
$html = file_get_contents($url);
Также обратите внимание, что возвращенный JSON имеет ошибку символов Malformed UTF-8, возможно, неправильно закодированных
Чтобы исправить это
$url = 'http://espn.go.com/travel/sports/calendar/getList.json?&xhr=1&date=20121027&type=list&query=null&myTeams='; $html = file_get_contents($url); $json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($html)); $json = json_decode($json); echo "<pre>"; print_r($json);
Вывод
tdClass Object ( [nfb] => Array ( [0] => stdClass Object ( [events] => Array ( [0] => stdClass Object ( [id] => 265911 [time] => 12:00 AM ET [sportId] => 23 [link] => http://espn.go.com/ncf/team/_/name/ [prevLink] => http://espn.go.com/ncf/preview?gameId=323010002 [recapLink] => http://espn.go.com/ncf/recap?gameId=323010002 [shortSport] => ncaa [homeId] => 2 [awayId] => 245 [homeScore] => -1 ... So Many More
Посмотреть демо-версию