分类 PHP技巧 下的文章

PHP语法的替代语法(另类写法)

1. 在研究博客模板(如 TypechoWordPressZ-Blog等博客程序的)、论坛模板(如 DiscuzPHPwind等论坛程序的)及其它PHP程序模板文件中,常常会看到一些奇怪的语法,还质疑能不能正常运行,答案当然是肯定的:“能运行”,比如:

<?php if(isset($_GET['host']) ==false): ?>
    $_GET['host']变量是<font color="red">空的</font>
<?php endif; ?>

对于相当一部分PHP爱好者来说根本没见过啊,这些是什么东西呢?难道是那些博客的开发者自己搞的仿PHP的模板语言?

非也,其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的 替代语法

这里就就给大家详细说一下 PHP流程控制 的替代语法。什么是 替代语法

简单的说,这是一些PHP语法的另类写法。

- 阅读剩余部分 -

PHP注释规范(含实例)

PHP注释规范

通用注释写法

一、文件的注释通用样例(普通程序文件,类文件,函数文件,变量定义文件)

/**
 * XXXXX的文件
 * 
 * 功能1: xxx
 * 功能2: xxx
 *
 * @file        $Source: /home/doc/php开发注释规范.md  $
 * @package     core
 * @author      Joy <[email protected]>
 * @version     $Id: php开发注释规范.txt,v 1.1 2014/03/04 20:37:46 Joy Exp $
 * @link        http://www.joychao.cc
 */

- 阅读剩余部分 -

茉莉QQ机器人V3.2,修复版,解决扫码登录失败的问题

茉莉3.2 NowTime 独家修复版

2017-02-09 腾讯对验证二维码的状态,多了一项参数 ptqrtoken

计算 ptqrtoken 的PHP代码:

function get_ptqrtoken($sigs){//$sigs是从Cookies里获取的,这个会的人都会,不会的我也没办法...
	$len = strlen($sig);
	$hash = 0;
	for ($i = 0; $i < $len; $i++) {
		$hash += (($hash << 5) & 2147483647) + ord($sig[$i]);
	}
	return $hash & 2147483647;
}

1.把下载的 补丁包里的 class 文件夹直接覆盖在网站根目录即可,你也可以下载 完整包 重新安装

2.然后就可以正常登陆了,有些人说获取二维码失败,那可能是你的空间问题,不能怪源码有问题

测试截图:

测试截图

演示地址:http://robot.qq.iton.pw (服务器地址:河南-郑州)

压缩包有密码,压缩包有密码,压缩包有密码!

重要的事情说3遍,直接解压不行!!!

/*--------------------------------*/

解压密码:blog.ogdn.net

/*--------------------------------*/

下载地址:

[扫码登陆错误修复补丁]茉莉QQ机器人_V3.2.zip

[完整包,修复扫描登陆错误]茉莉QQ机器人_3.2正式版.zip

如何用PHP抓取必应的每日背景图

必应每日一图(cn.bing.com),指的是 cn.bing.com 网站的背景图片每天00:00就会更新一张。

很多人都喜欢把这些图片当作壁纸(包括我,当然,我并不是手动更换的,而是通过一款软件《必应自动桌面》来实现每天自动更换壁纸,当然,我们的主题是 如何用PHP抓取必应的每日背景图 )。

Bing的每日背景图片官方都有一个接口,一个是 json 方式,一个是 XML 的方式,所以就有了下面的这两个地址。

1.  http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
2.  http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1

根据上面接口的参数,我大致得出了以下3个参数的解析:


1. format,非必要。我理解为输出格式,不存在或者不等于js,即为xml格式,等于js时,输出json格式;

2. idx,非必要。不存在或者等于0时,输出当天的图片,-1为已经预备用于明天显示的信息,1则为昨天的图片,idx最多获取到前16天的图片信息;*
3. n,必要。这是输出信息的数量,比如n=1,即为1条,以此类推,至多输出8条。


有兴趣的同学可以去研究上面的接口吧,接下来我来贴代码了,我是调用的第二个接口(返回格式是 XML):

<?php
/**
 *Description:获取Bing每日背景图
 *Version:1.0
 *Author:初文
 */
ini_set('date.timezone','Asia/Shanghai');//设置时区,亚洲、上海;老外好像更喜欢上海,所以不能改成 Asia/Beijing
/**
*我对此做了缓存,减轻服务器负载,如果不需要,你可以自己改一下
*/
$tomorrow=strtotime(date('Y-m-d 00:00:00',strtotime('+1 day')));//明天的时间戳
$cache_time=$tomorrow-time();//明天的时间戳-现在的时间戳=缓存的时间,因为必应每日一图,一天换一次...
$modified_time=@$_SERVER['HTTP_IF_MODIFIED_SINCE'];
if(strtotime($modified_time)+$cache_time>time()){//如果缓存的时间戳大于现在的时间戳
	header("HTTP/1.1 304");//发送HTTP状态码304,使浏览器返回缓存的结果
}else{//否则抓取重新抓取图片,返回给用户
	$str=curl_get('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
	if(preg_match("/<url>(.+?)<\/url>/ies",$str,$matches)){
		$imgurl='http://cn.bing.com'.$matches[1];
	}
	if($imgurl){
		header('Content-Type: image/JPEG');
		header ("Last-Modified: ".gmdate("D, d M Y H:i:s", time() )." GMT");//发送Last-Modified头标,设置文档的最后的更新日期。
		header ("Expires: ".gmdate("D, d M Y H:i:s", time()+$cache_time )." GMT");//发送Expires头标,设置当前缓存的文档过期时间,GMT格式。
		header ("Cache-Control: max-age=$cache_time");//发送Cache_Control头标,设置xx秒以后文档过时,可以代替Expires,如果同时出现,max-age优先。
		@ob_end_clean();
		@readfile($imgurl);
		@flush();
		@ob_flush();
		die;
	}else{
		die('error, please try again !');//获取失败,提醒用户刷新页面重试
	}
}
function curl_get($url,$time_out=10){
	$ch=curl_init($url);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; U; Android 4.4.1; zh-cn; R815T Build/JOP40D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 Chrome/4.5 Mobile Safari/533.1');
	curl_setopt($ch,CURLOPT_TIMEOUT, $time_out);
	$content=curl_exec($ch);
	curl_close($ch);
	return($content);
}
?>


Demo: https://www.ogdn.net/assets/img/bingimg.php  //仅供演示用,不能用此链接作网站背景链接,因为有防盗链,你弄到网站当背景图也不会显示,要是真有需要,请在下方留言,我抽空做一个外链