7个超级实用的PHP代码片段


Posted in PHP onJuly 11, 2011

1、超级简单的页面缓存
如果你的工程项目不是基于 CMS 系统或框架,打造一个简单的缓存系统将会非常实在。下面的代码很简单,但是对小网站而言能切切实实解决问题。

<?php 
// define the path and name of cached file 
$cachefile = 'cached-files/'.date('M-d-Y').'.php'; 
// define how long we want to keep the file in seconds. I set mine to 5 hours. 
$cachetime = 18000; 
// Check if the cached file is still fresh. If it is, serve it up and exit. 
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { 
include($cachefile); 
exit; 
} 
// if there is either no file OR the file to too old, render the page and capture the HTML. 
ob_start(); 
?> 
<html> 
output all your html here. 
</html> 
<?php 
// We're done! Save the cached content to a file 
$fp = fopen($cachefile, 'w'); 
fwrite($fp, ob_get_contents()); 
fclose($fp); 
// finally send browser output 
ob_end_flush(); 
?>

点击这里查看详细情况:http://wesbos.com/simple-php-page-caching-technique/

2、在 PHP 中计算距离
这是一个非常有用的距离计算函数,利用纬度和经度计算从 A 地点到 B 地点的距离。该函数可以返回英里,公里,海里三种单位类型的距离。

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 
$theta = $lon1 - $lon2; 
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
$dist = acos($dist); 
$dist = rad2deg($dist); 
$miles = $dist * 60 * 1.1515; 
$unit = strtoupper($unit); if ($unit == "K") { 
return ($miles * 1.609344); 
} else if ($unit == "N") { 
return ($miles * 0.8684); 
} else { 
return $miles; 
} 
}

使用方法:
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometers";

点击这里查看详细情况:http://www.phpsnippets.info/calculate-distances-in-php

3、将秒数转换为时间(年、月、日、小时…)
这个有用的函数能将秒数表示的事件转换为年、月、日、小时等时间格式。

function Sec2Time($time){ 
if(is_numeric($time)){ 
$value = array( 
"years" => 0, "days" => 0, "hours" => 0, 
"minutes" => 0, "seconds" => 0, 
); 
if($time >= 31556926){ 
$value["years"] = floor($time/31556926); 
$time = ($time%31556926); 
} 
if($time >= 86400){ 
$value["days"] = floor($time/86400); 
$time = ($time%86400); 
} 
if($time >= 3600){ 
$value["hours"] = floor($time/3600); 
$time = ($time%3600); 
} 
if($time >= 60){ 
$value["minutes"] = floor($time/60); 
$time = ($time%60); 
} 
$value["seconds"] = floor($time); 
return (array) $value; 
}else{ 
return (bool) FALSE; 
} 
}

点击这里查看详细情况:http://ckorp.net/sec2time.php

4、强制下载文件
一些诸如 mp3 类型的文件,通常会在客户端浏览器中直接被播放或使用。如果你希望它们强制被下载,也没问题。可以使用以下代码:

function downloadFile($file){ 
$file_name = $file; 
$mime = 'application/force-download'; 
header('Pragma: public'); // required 
header('Expires: 0'); // no cache 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Cache-Control: private',false); 
header('Content-Type: '.$mime); 
header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); 
header('Content-Transfer-Encoding: binary'); 
header('Connection: close'); 
readfile($file_name); // push it out 
exit(); 
}

点击这里查看详细情况:Credit: Alessio Delmonti

5、使用 Google API 获取当前天气信息
想知道今天的天气?这段代码会告诉你,只需 3 行代码。你只需要把其中的 ADDRESS 换成你期望的城市。

$xml = simplexml_load_file('http://www.google.com/ig/api?weather=ADDRESS'); 
$information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition"); 
echo $information[0]->attributes();

点击这里查看详细情况:http://ortanotes.tumblr.com/post/200469319/current-weather-in-3-lines-of-php

6、获得某个地址的经纬度
随着 Google Maps API 的普及,开发人员常常需要获得某一特定地点的经度和纬度。这个非常有用的函数以某一地址作为参数,返回一个数组,包含经度和纬度数据。

function getLatLong($address){ 
if (!is_string($address))die("All Addresses must be passed as a string"); 
$_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address)); 
$_result = false; 
if($_result = file_get_contents($_url)) { 
if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false; 
preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match); 
$_coords['lat'] = $_match[1]; 
$_coords['long'] = $_match[2]; 
} 
return $_coords; 
}

点击这里查看详细情况:http://snipplr.com/view.php?codeview&id=47806

7、使用 PHP 和 Google 获取域名的 favicon 图标
有些网站或 Web 应用程序需要使用来自其他网站的 favicon 图标。利用 Google 和 PHP 很容易就能搞定,不过前提是 Google 不会连接被重置哦!

function get_favicon($url){ 
$url = str_replace("http://",'',$url); 
return "http://www.google.com/s2/favicons?domain=".$url; 
}

点击这里查看详细情况:http://snipplr.com/view.php?codeview&id=45928
PHP 相关文章推荐
人大复印资料处理程序_查询篇
Oct 09 PHP
图书管理程序(一)
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
PHP操作路由器实现方法示例
Apr 27 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php函数的常用方法及注意之处小结
Jul 10 #PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 #PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 #PHP
PHP的一个基础知识 表单提交
Jul 04 #PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 #PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 #PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 #PHP
You might like
php异常处理使用示例
2014/02/25 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
js+css在交互上的应用
2010/07/18 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
javascript常见操作汇总
2014/09/03 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
Python自定义主从分布式架构实例分析
2016/09/19 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
12月红领巾广播稿
2014/02/13 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
财务统计员岗位职责
2015/04/14 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
小学英语教学随笔
2015/08/14 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android