包含php免費調用天氣的詞條

本文目錄一覽:

php獲取天氣預報的代碼

?php    

$URLStyle = “”;    

$chinaURL = sprintf($URLStyle, “china”);    

$chinaStr = file_get_contents($chinaURL);    

$chinaObj = simplexml_load_string($chinaStr);    

$chinaObjLen = count($chinaObj-city);    

echo “chinaObjLen = “.$chinaObjLen.”\n”;    

for ($i=0;$i$chinaObjLen;$i++){    

//遍歷省一級節點,共37個    

        $level1 = $chinaObj-city[$i][“pyName”];    

        $shengjiURL = sprintf($URLStyle, $level1);    

        $shengjiStr = file_get_contents($shengjiURL);    

        //echo $shengjiStr;    

        $shengjiObj = simplexml_load_string($shengjiStr);     

        $shengjiObjLen = count($shengjiObj-city);    

//      echo $chinaObj-city[$i][“quName”];    

//      echo ” “.$shengjiObjLen.”\n”;    

        for ($j=0;$j$shengjiObjLen;$j++){    

        //遍歷市一級節點    

                $level2 = $shengjiObj-city[$j][“pyName”];    

                $shijiURL = sprintf($URLStyle, $level2);    

                $shijiStr = file_get_contents($shijiURL);    

                //echo $shijiStr;    

                $shijiObj = simplexml_load_string($shijiStr);     

             //直轄市和海南、台灣、釣魚島等沒有縣級節點    

                if(!$shijiObj){    

                        echo “WARNNING: not exsit next level node. – “.$level1.”-“.$shijiURL.”\n”;    

                        echo ‘  “‘.$shengjiObj-city[$j][“cityname”].'” = ‘;    

                        echo $shengjiObj-city[$j][“url”].”,\n”;    

                        continue;    

                }    

                $shijiObjLen = count($shijiObj-city);    

                //echo $shengjiObj-city[$j][“cityname”].”  “;    

                //echo $shijiObjLen.”\n”;    

                for ($k=0;$k$shijiObjLen;$k++){    

                //遍歷縣一級節點    

                        $xianji_code = $shijiObj-city[$k][“url”];    

                        echo ‘  “‘.$shijiObj-city[$k][“cityname”].'” = ‘;    

                        echo $shijiObj-city[$k][“url”].”,\n”;    

                        //echo $xianji_code.”\n”;     

                }    

        }    

}           

//print_r($chinaObj);    

?

通過XML介面根節點遞歸獲得全國幾千個縣以上城市cide code的代碼

PHP 頁面調用天氣預報web服務 我想在一個PHP頁面直接調用現成的webservice

完全可以。前提是要打開soap擴展,調用方法如下:

?php

$client = new SoapClient(”);

$parm=array(‘theCityCode’=’三亞’,’theUserID’=”);

$result=$client-getWeather($parm);

print_r($result);

?

百度首頁的天氣預報顯示用php怎麼實現

方式一、你可以去氣象局的網站使用php(python)爬蟲抓取網頁HTML內容提取其中的信息即可。

方式二、氣象局的網站一般提供了免費的API介面,可以得到一個封裝好的JSON數據包,拆開就能得到很多信息

php的socket調用可以實現查天氣嗎

本文分享下,php調用yahoo與sina的天氣api,實現實時顯示天氣預報的代碼,有興趣的朋友研究下吧。

yahoo 天氣預報

地址

代碼:

複製代碼代碼示例:

?php

header ( ‘Content-Type: text/html; charset = utf-8’ );

class weather {

static $url = ‘;w=’;

static $city = ‘Beijing’; //默認城市北京 這裡要注意的是 city 要填拼音 我試過用中文有好幾個地區都調用不到

static $weatherXML = ”;

static $woeid_file = “woeid”;

static $file_path = “data/”;

/**

* 獲得遠程xml並緩存到本地

*/

static public function getXML($city = null) {

if ($city != null){

self::$city = $city;

}

self::$weatherXML = self::$file_path . md5(self::$city) . ‘-weather.xml’;

if (file_exists( self::$weatherXML )) {

$fileTime = filemtime ( self::$weatherXML );

$stater = time () – $fileTime – 60 * 60 * 2;

if ($stater 0) {

return true;

}

}

//獲取woeid

$woeid = self::getWOEID();

self::$url = self::$url . $woeid[0];

//獲取當天 天氣

$XML = self::vget(self::$url);

//保存當天 天氣到文件

self::cacheXML($XML);

self::analysisXML($XML);

}

static public function analysisXML($simple) {

$p = xml_parser_create();

xml_parse_into_struct($p, $simple, $vals, $index);

xml_parser_free($p);

//本周天氣

$weekindex = $index[‘YWEATHER:FORECAST’];

$week = array();

foreach($weekindex as $k=$v){

$week[$k] = $vals[$v][‘attributes’];

}

unset($index);

unset($vals);

print_r($week);

/*

yweather:forecast day=”Wed” date=”18 Sep 2013″ low=”20″ high=”32″ text=”Sunny” code=”32″/

* day 星期

* date 日期

* low 最低溫度

* high 最高溫度

* test 天氣狀態

* code 天氣圖標

*/

}

/*

* 取得地區WOEID碼

*/

static private function getWOEID(){

static $woeid = array();

if(isset($woeid[self::$city])){

return $woeid[self::$city];

}

if (file_exists( self::$file_path . self::$woeid_file )) {

$woeidSTR = file_get_contents(self::$file_path . self::$woeid_file);

$woeid = json_decode($woeidSTR , true);

if(isset($woeid[self::$city])){

return $woeid[self::$city];

}

}

$geoPlaces = “‘”.self::$city.”%20CH'”;

$XML = simplexml_load_file( $geoPlaces );

if(isset($XML-results-place[0])){

$rs = $woeid[self::$city] = $XML-results-place[0]-woeid;

//保存到文件

$woeidSTR = json_encode($woeid);

file_put_contents(self::$file_path . self::$woeid_file, $woeidSTR);

return $rs;

}else{

//如果找不到城市 woeid 默認城市就改為 北京

self::$city = “Beijing”;

return self::getWOEID();

}

}

/**

* 創建xml緩存

* @param $contents 要緩存的內容

*/

static private function cacheXML($contents) {

$contents = str_ireplace ( ‘?xml version=”1.0″?’, “?xml version=\”1.0\”? \n”, $contents );

$contents = mb_convert_encoding ( $contents, ‘utf-8’, ‘gbk’ );

file_put_contents ( self::$weatherXML, $contents ) or die ( ‘沒有寫許可權’ );

}

/**

* 模擬獲取內容函數

* @param type $url

* @return type

*/

static private function vget($url) {

$user_agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)”;

$curl = curl_init (); // 啟動一個CURL會話

curl_setopt ( $curl, CURLOPT_URL, $url ); // 要訪問的地址

curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); // 對認證證書來源的檢查

curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 1 ); // 從證書中檢查SSL加密演算法是否存在

curl_setopt ( $curl, CURLOPT_USERAGENT, $user_agent ); // 模擬用戶使用的瀏覽器

@curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自動跳轉

curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); // 自動設置Referer

curl_setopt ( $curl, CURLOPT_HTTPGET, 1 ); // 發送一個常規的Post請求

curl_setopt ( $curl, CURLOPT_TIMEOUT, 120 ); // 設置超時限制防止死循環

curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 顯示返回的Header區域內容

curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 獲取的信息以文件流的形式返回

$tmpInfo = curl_exec ( $curl ); // 執行操作

if (curl_errno ( $curl )) {

curl_close ( $curl ); // 關閉CURL會話

die(‘Errno’ . curl_error ( $curl )) ;

}

curl_close ( $curl ); // 關閉CURL會話

return $tmpInfo; // 返回數據

}

}

weather::getXML(“Changsha”);

怎麼用php抓取天氣預報?先說下思路,再舉個例子。

我昨天剛做了個,本來打算自己用,你既然問,就分享了吧!

PS:因為我是菏澤人,所以,如果你什麼都不填,就顯示菏澤天氣。

如果想顯示別的,直接輸入就行,比如”香港”,然後提交就OK了

不知道是否合乎樓主的意願(不用JS)

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287440.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:07
下一篇 2024-12-23 13:07

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 使用ActivityWeatherBinding簡化天氣應用程序的開發

    如何使用ActivityWeatherBinding加快並簡化天氣應用程序的開發?本文將從以下幾個方面進行詳細闡述。 一、簡介 ActivityWeatherBinding是一個在…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • Python實現天氣關係圖

    本文將介紹如何使用Python繪製天氣關係圖,通過分析和可視化天氣數據,幫助我們更好地了解天氣的變化和趨勢。 一、數據準備 首先我們需要從數據源中獲取天氣數據。我們可以使用爬蟲技術…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24

發表回復

登錄後才能評論