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 相关文章推荐
php 特殊字符处理函数
Sep 05 PHP
用PHP查询搜索引擎排名位置的代码
Jan 05 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
PHP实现过滤掉非汉字字符只保留中文字符
Jun 04 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
PHP实现递归的三种方法
Jul 04 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
python爬虫实例详解
2018/06/19 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
低碳环保倡议书
2014/04/14 职场文书
环保建议书300字
2014/05/14 职场文书
公务员年度考核评语
2014/12/31 职场文书
表扬通报怎么写
2015/01/16 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
首次购房证明
2015/06/19 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python