首页 > 编程知识 正文

包含php免费调用天气的词条

时间:2024-03-25 09:50:08 阅读:332936 作者:SDJU

本文目录一览:

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)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。