取得新浪天气预报网页的城市当日信息.
共有两个文件:
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();
?>
分享到:
相关推荐
本文实例讲述了php使用fsockopen函数发送post,get请求获取网页内容的方法。分享给大家供大家参考。 具体实现代码如下: 复制代码 代码如下:$post =1; $url = parse_url($url); $host =’//www.jb51.net’; $path ...
下载此文件,解压并上传到网站源码根目录。然后访问这个文件【例如您网站的源码是直接放在abc.com的根目录,则访问http://abc.com/pfsockopen.php】,直接点【开始执行替换操作】,即可。
主要介绍了php源码 fsockopen获取网页内容实例详解的相关资料,需要的朋友可以参考下
二、如何解决fsockopen函数被禁用1、如果服务器没有同时禁用pfsockopen,那么直接将fsockopen函数替换为pfsockopen。具体操作:搜索程序中的字符串 fsockopen( 替换为 pfsockopen( 。示例如下修改前:$fp = ...
fsockopen用法.txt
fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on;fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。服务器端代码:server.php复制代码 代码如下:<?...
主要介绍了php中fsockopen用法,实例分析了fsockopen的创建、写入及关闭等具体流程,需要的朋友可以参考下
该资源使用了 PHP 的 fsockopen 函数来连接查询服务器。fsockopen 函数用于打开一个网络 socket 连接,用于与远程服务器通信。 知识点6:错误处理 该资源提供了一个错误处理机制,如果查询服务器不存在或无法连接...
fsockopen get/post 表单及上传文件例子。
近期黑客利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定,现在将危险函数 fsockopen 暂时禁用,部分程序功能可能有问题,以下列出已知问题及通用解决方法
也许fsockopen、pfsockopen函数的确存在着安全的隐患,但是我们却已经无从考证,这都是IDC商说的,不管是什么原因吧,反正他们是把这两个函数禁用了,那么如何解决呢,下面是小编整理的方法,希望对用到的同学有一定...
fsockopen 是套接字包功能,除了基本的常用TCP://通讯功能外,它还具有其他强大的通讯功能,UDP:// unix:// udg://等各种协议。 您可以使用获取当前服务器注册的套接字传输协议列表,以确定是否支持需要使用该...
本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器。 2、关键技术 本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,则该端口处于开放状态,否则该...
发布一个用PHP fsockopen写的HTTP下载的类
使用php可以模拟post和get传送数据到别的网页或者是站点,那么怎么传送数据呢?下面由小编给大家介绍利用PHP fsockopen 模拟POST/GET传送数据的方法,需要的朋友一起看看吧
有没有办法在php中实现多线程呢?假设你正在写一个基于多台服务器的php应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。可以实现吗?回答是当然可以,下面看解决方法