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

巴扎黑
发布: 2016-11-24 14:48:40
原创
1341人浏览过

取得新浪天气预报网页的城市当日信息. 
共有两个文件: 
tianqi.html:利用下拉菜单跳转到网页获得天气预报信息,返回信息到浮动帧内; 
<html> 
<head></head> 
<script> 
<!-- 
function go(){ 
var url2='http://php.weather.sina.com.cn/search.php?city=' 
window.status='搜寻中...'; //隐藏状态栏信息 
var a=document.form.city.selectedindex; 
var city1=document.form.city.options[a].value; 
document.form.url.value=url2+city1; 
//window.location=url+city1; 
document.form.submit(); 

--> 
</script> 
<body> 
<center> 
<iframe width="300" height="70" name="frame" src="get_tianqi.php" frameborder="1"></iframe> 
<form action="get_tianqi.php" method="post" name="form" target="frame"> 
<select name="city" onchange="go()"> 
<option value="">请选择一个城市</option> 
<option value="广州">广州</option> 
<option value="肇庆">肇庆</option> 
<option value="湛江">湛江</option> 
<option value="深圳">深圳</option> 
<option value="东莞">东莞</option> 
<input type="hidden" name="url" value=""> 
</select> 
</form> 
</center></body></html> 

get_tianqi.php:取得天气预报信息 
<?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,"<!-- 天气状况 begin -->");//取得天气预报的截取段 
$end=strpos($content,"<!-- 天气状况 end -->"); 
$len=$end-$start; 
$b=substr($content,$start,$len); //截取得指定内容 
//从上面的截取段中取得城市今日天气预报的截取段 
$sub_start=strpos($b,"<div class=\"city_data\">");  
$sub_end=strpos($b,"<div class=\"weather_sm\">"); 
$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.="<br>"; 


echo $e; 
ob_end_flush(); 
?>  

天工
天工

昆仑万维推出的通用AI智能体平台,原天工AI

天工 212
查看详情 天工
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号