php获取当天 天气预报,php函数fsockopen获取新浪天气预报

这段PHP代码演示了如何使用fsockopen函数从新浪天气网站获取特定城市的天气预报信息。通过解析URL并建立服务器连接,然后发送HTTP请求,获取返回的HTML内容。进一步处理内容以提取天气预报的详细信息。
摘要由CSDN通过智能技术生成

php函数fsockopen获取新浪天气预报

取得新浪天气预报网页的城市当日信息.

共有两个文件:

tianqi.html:利用下拉菜单跳转到网页获得天气预报信息,返回信息到浮动帧内;

请选择一个城市

广州

肇庆

湛江

深圳

东莞

get_tianqi.php:取得天气预报信息

/* 此程序是从新浪网的天气网页http://php.weather.sina.com.cn/search.php?city=中取得某个城市的天气预报*/

ob_start(); //启动输出缓冲

function request_url($url,$method='POST') {

$url = parse_url($url); //解析url地址,取得host,path,port,query等

if (!$url) return "couldn't parse url";

if (!isset($url['port'])) { $url['port'] = ""; }

if (!isset($url['query'])) { $url['query'] = ""; }

//连接服务器

$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);

if (!$fp) return "不能连接".$url['host']."服务器";

//发送请求

fputs($fp, sprintf("$method %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));

fputs($fp, "Host: $url[host]\n");

fputs($fp, "Content-type: application/x-www-form-urlencoded\n");

fputs($fp, "Connection: close\n\n");

//获得请求后返回的内容

$line = fgets($fp,1024);

if (!eregi("^HTTP/1\.. 200", $line)) return;

$results = "";

while(!feof($fp)) {

$line = fgets($fp,1024);

$results .= $line;

}

fclose($fp);

return $results;

}

//获得从其它网页传送过来的url(带查询字串)

if (!$_REQUEST['url']) {

echo "请添加一个url";

exit;

}else{

$url=$_REQUEST['url'];

}

$content=request_url($url); //取得请求后的网页内容

$start=strpos($content,"");//取得天气预报的截取段

$end=strpos($content,"");

$len=$end-$start;

$b=substr($content,$start,$len); //截取得指定内容

//从上面的截取段中取得城市今日天气预报的截取段

$sub_start=strpos($b,"

");

$sub_end=strpos($b,"

");

$len2=$sub_end-$sub_start;

$c=substr($b,$sub_start,$len2);

$d=split("\n",$c); //去掉换行符

//print_r($d);

$e="";

foreach ($d as $key=>$value){

$value=strip_tags($value); //去掉html标记

$e.=$value;

if ($key==2) {

$e.="
";

}

}

echo $e;

ob_end_flush();

?>

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值