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


Posted in PHP onJanuary 05, 2012

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
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
Laravel中间件实现原理详解
Oct 09 PHP
简述php环境搭建与配置
Dec 05 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 #PHP
选择PHP作为网站开发语言的原因分享
Jan 03 #PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 #PHP
第七章 php自定义函数实现代码
Dec 30 #PHP
第六章 php目录与文件操作
Dec 30 #PHP
第五章 php数组操作
Dec 30 #PHP
第四章 php数学运算
Dec 30 #PHP
You might like
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
php文件系统处理方法小结
2016/05/23 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
分享15个最受欢迎的Python开源框架
2014/07/13 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
Python实现的字典值比较功能示例
2018/01/08 Python
谈谈python中GUI的选择
2018/03/01 Python
python读取和保存图片5种方法对比
2018/09/12 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python 实现一个简单的web服务器
2021/01/03 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
影视艺术学院毕业生自荐信
2013/11/13 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
银行求职推荐信范文
2013/11/30 职场文书
大学生自荐信
2013/12/11 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
九年级数学教学反思
2016/02/17 职场文书
员工安全责任协议书
2016/03/22 职场文书