php采集天气预报2段代码
js调用天气预报方法
中国气象台
代码如下 | 复制代码 |
<iframe src="http://m.weather.com.cn/m/pn12/weather.htm " width="245" height="110" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"></iframe> |
上面是使用了框架方法,不好改自己的格式风格
最简单办法
代码如下 | 复制代码 |
<?php |
html代码
代码如下 | 复制代码 |
<html> |
上面是指定城市了,我们可以在自己网站选择城市,例子
代码如下 | 复制代码 |
<?php /** * php 天气预报代码 * by www.111cn.net */ if(!isset($_GET['q'])){ //根据IP查询所在地 $p = file_get_contents("http://www.jbxue.com/ip/?q={$_SERVER['HTTP_X_FORWARDED_FOR']}"); } else{ $p = $_GET['q']; } $k = 0; $encoding = mb_detect_encoding()($p); if($encoding != "UTF-8"){ $p = mb_convert_encoding($p,"utf-8","gbk"); } $p_arr = array( "01" => "北京", "02" => "上海", "03" => "天津", "04" => "重庆", "05" => "黑龙江", "06" => "吉林", "07" => "辽宁", "08" => "内蒙古", "09" => "河北", "10" => "山西", "11" => "陕西", "12" => "山东", "13" => "新疆", "14" => "西藏", "15" => "青海", "16" => "甘肃", "17" => "宁夏", "18" => "河南", "19" => "江苏", "20" => "湖北", "21" => "浙江", "22" => "安徽", "23" => "福建", "24" => "江西", "25" => "湖南", "26" => "贵州", "27" => "四川", "28" => "广东", "29" => "云南", "30" => "广西", "31" => "海南", "32" => "香港", "33" => "澳门", "34" => "台湾" ); function find(&$item,$key,$data){ global $k; if(preg_match("/$item/u",$data)){ $k = $key; } } function get_data_arr($key){ if(!file_exists("./data/city{$key}.xml")){ $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" ); file_put_contents("./data/city{$key}.xml",$c); } else{ $c = file_get_contents("./data/city{$key}.xml"); } $arr = explode(",",$c); foreach($arr as $v){ $data = explode("|",$v); $ret[$data[0]] = $data[1]; } return $ret; } array_walk($p_arr,'find',$p); array_walk(get_data_arr($k),'find',$p); array_walk(get_data_arr($k),'find',$p); $ccode = get_data_arr($k); echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html"); ?> |
还有很多像可以调用更详细的天气信息的我们这里就不介绍了,大家可到天气网站去看他们提供的api接口 。
在php中URL跳转不管那种做法都离不开header函数,下面我就给各位整理一些常用的URL跳转实现程序与方式,有需要的朋友可参考一下。
1.header()函数
header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。
header()函数的定义如下:
void header (string string [,bool replace [,int http_response_code]])
可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。
第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:
1.location和“:”号间不能有空格,否则不会跳转。
2.在用header前不能有任何的输出。
3.header后的PHP代码还会被执行。例如,将浏览器重定向到linzl.com
代码如下 | 复制代码 |
< ?php |
1、php跳转代码一句话式:
代码如下 | 复制代码 |
<?php $url = $_GET['url']; Header("Location:$url"); ?> |
注:假如保存为ad.php,即可实现ad.php?url=www.111cn.net跳转到集思网的效果
2、php跳转代码if判断式:
代码如下 | 复制代码 |
if($_COOKIE["u_type"]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');//设置cookie长期有效 header('location:zc.html'); } |
注:保存为zc.php,当用户访问zc.php时,判断一个cookie是否存在,如果存在就跳转到register.php,如果不存在则创建cookie然后跳转到zc.html
URL重定向函数
代码如下 | 复制代码 |
// URL重定向 |
上面的不能返回404状态,如果是页面跳转之后返回404状态代码我们可如下操作
代码如下 | 复制代码 |
function getref() |
如果要做301也差不多
代码如下 | 复制代码 |
<?php |
参数说明:$data 目标数组 $key 排序字段, $sort 排序规则
代码如下 | 复制代码 |
function getSortArray($data,$key,$sort='ASC') 使用方法: $a = array( 结果: ( [0] => Array ( [name] => sunny [age] => 28 )
[1] => Array ( [name] => stone [age] => 17 [sex] => 男 )
[2] => Array ( [name] => grass [age] => 16 [sex] => 女 )
[3] => Array ( [name] => sea [age] => 15 [birthday] => 1987-08-16 )
) |
不知道你有没有看懂呢?没懂我们再看两个数组排序例子
要对数组针对age字段进行排序,php自带的简单sort功能函数,显然都不能满足需求,因此需要自己写一个快速排序代码来实现相应的需求。
代码如下 | 复制代码 |
<?php <?php |
最后总结测试环境:
Ubuntu Server 14.04
PHP Version 5.5.9-1ubuntu4
Apache/2.4.7 (Ubuntu)
PATH_INFO是服务器状态中的一个参数,通过$_SERVER['PATH_INFO']可以查看内容。$_SERVER数组中除了PATH_INFO外,还有非常多的数据,比如REQUEST_URI包含了更多的信息。
还有容易混淆的概念:pathinfo指的是PHP4(4.0.3)的一个功能,用于返回一个文件的路径信息。
Apache默认支持PATH_INFO功能,网上的很多教程不是需要修改apache的配置文件,就是要修改php的配置文件,其实完全不用修改任何文件,可以采用以下两种方式来验证PATH_INFO功能。
方式一:原生代码测试
在一个全新的系统上,比如新建一个Ubuntu 14.04 Server虚拟机,仅安装OpenSSH和LAMP软件包。
在Apache的主路径/var/www/html目录下新建测试文件pathinfo.php,内容为
<?php
echo $_SERVER['PATH_INFO'];
?>
假设虚拟机的IP是192.168.1.106,访问http://192.168.1.106/pathinfo.php,会得到一个空白的页面。因为这个URL没有包含PATH_INFO信息。
更换网址测试http://192.168.1.106/pathinfo.php/year/2014/,页面上会显示/year/2014/,说明可以识别PATH_INFO信息。
方法二:用ThinkPHP测试
很多的PHP框架都需要获取PATH_INFO的值,以ThinkPHP为例,基本的步骤是:
下载最新的ThinkPHP到/var/www/html/目录,并解压,修改文件的权限为www-data
访问网址http://192.168.1.106/index.php,会自动生成Application下的文件列表
编辑文件Application/Home/Controller/IndexController.class.php,内容为
<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
public function index(){
$this->show('Hi,All','utf-8');
}
public function test(){
$this->show('test');
}
}
当访问http://192.168.1.106/index.php的时候,本质上是访问了http://192.168.1.106/index.php/Home/Index/index,如果后面这个长的可以访问,说明PATH_INFO是正常的。
如果存在异常,ThinkPHP可以能报错为无法加载模块/控制器或非法操作,可以通过访问test方法来验证。
输入网址http://192.168.1.106/index.php/Home/Index/test测试,页面会正常显示test
补充:Apache2.2.22开启PathInfo模式支持
在配置文件中加入
<Files *.php>
AcceptPathInfo On
</Files>
这样 Apache 就可以支持针对 php 文件的 PathInfo 了。
于是,小柒又充满希望的试了一下,可惜,还是没有成功。
我想,这PathInfo跟URL有关,那会不会是因为Apache服务器没有开启mod_rewrite模块的关系呢?于是,我在Apache的配置文件(Apache安装目录的conf文件夹下的httpd.conf文件)里找到:
#LoadModule rewrite_module modules/mod_rewrite.so
将前面的#去掉,改为:
LoadModule rewrite_module modules/mod_rewrite.so
保存,重启服务器后,项目终于可以使用PathInfo模式访问了
最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词。
于是搜索了下发现有个java版的半成品解密代码,测试了下竟然还是“乱码”,巨坑!于是只有采用最原始的办法,对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码:
代码如下 | 复制代码 |
public function loaderCompleteHandler(param1:ByteArray) : void{ |
根据这段代码可以很快转换成php解析代码:
代码如下 | 复制代码 |
$enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105); |
上面的$krc_content为krc歌词压缩加密的文本内容,得到了解析后的krc明文文本歌词$krc_text,然后就可以很容易的转换成lrc歌词了,如下:
代码如下 | 复制代码 |
/** preg_match_all("/[(ar|ti|offset):(.+)]/",$krc_text,$matches); |
简单的示例:
代码如下 | 复制代码 |
$content = file_get_contents('1.krc'); |
分享一下,方便日后有类似需要的人查询!
相关文章
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
- 这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
- 这篇文章主要介绍了IDEA插件之快速删除Java代码中的注释,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-18
- 这篇文章主要介绍了C#超实用代码段合集,涉及C#针对图标、数学运算、拼音、日期、时间及文件夹等的相关操作技巧,需要的朋友可以参考下...2020-06-25