2013-07-15 4 views
0

Привет, ребята, я хочу получить элемент кода прогноза погоды этого запроса YQL, проблема в том, что это возвращает меня null .. Может кто-нибудь помочь, пожалуйста. !! я нуб в PHPRetrive YQL с PHP и json

     php 
      var_dump(getResultFromYQL()); 

     function getResultFromYQL() { 

      $yql_query_url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D946738&format=json&diagnostics=true&callback=?"; 

      $session = curl_init($yql_query_url); 
      curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

      $json = curl_exec($session); 
      curl_close($session); 

      return json_decode($json); 
     } 
     ?> 

OK Я нашел решение PHP

  $Jakarta = 946738; /* Jakarta */ 


      /* Use cURL to query the API for some XML */ 
      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, 'http://weather.yahooapis.com/forecastrss?w='.$Jakarta.'&u=f'); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      $weather_rss = curl_exec($ch); 
      curl_close($ch); 

      /* Create an object of the XML returned */ 
      $weather = new SimpleXMLElement($weather_rss); 

      /* 
      * Since I don't want to figure out an image system, I'll use Weather.com's (what Yahoo does) 
      * by pulling the image directly out of the returned API request. This could be done better. 
      */ 
      $weather_contents = $weather->channel->item->description; 
      // preg_match_all('/<img[^>]+>/i',$weather_contents, $img); 
      // $weather_img = $img[0][0]; 

      /* Get clean parts */ 

      $weather_cond = $weather->channel->item->xpath('yweather:condition'); 


      /* Function to convert Wind Direction from given degree units into Cardinal units */ 

      ?> 


          hp 

             print $weather_cond[0]->attributes()->code; 

           ?> 
        </div> 
       </div> 
      </div> 
      </div> 

ответ

1

отброшенной часть callback=? запроса. Он предназначен для функции обратного вызова JavaScript.

Рабочий URL должен быть: $yql_query_url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D946738&format=json&diagnostics=true";

UPDATE

Рабочий код: (проверено на PHP 5.3.27 и 5.4.17)

<?php 
function getResultFromYQL() { 
    $yql_query_url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D946738&format=json&diagnostics=true"; 

    $session = curl_init($yql_query_url); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

    $json = curl_exec($session); 
    curl_close($session); 
    return json_decode($json); 
} 

var_dump(getResultFromYQL()); 
?> 
+0

я получаю нулевой снова, даже с 'callback =?' удалено ... есть что-то не так ... – user2304067

+0

Неудачно не работает Я получаю NULL, что у вас получается? я даже скопирую вставку вашего кода ... я тестировал на серверах php 5+ – user2304067

+0

Typo в моем коде. Теперь он должен работать. – Fracsi