超级实用的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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
php之XML转数组函数的详解
Jun 07 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php mail to 配置详解
Jan 16 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
PHP实现简易blog的制作
Oct 24 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 PHP
PHP变量的作用范围实例讲解
Dec 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
Php注入点构造代码
2008/06/14 PHP
php导出excel格式数据问题
2014/03/11 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
Yii中表单用法实例详解
2016/01/05 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
javascript 面向对象 function类
2010/05/13 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
使用python实现名片管理系统
2020/06/18 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
Java里面如何创建一个内部类的实例
2015/01/19 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
顶撞领导检讨书
2014/01/29 职场文书
趣味游戏活动方案
2014/02/07 职场文书
酒店管理求职信
2014/06/09 职场文书
公司户外活动总结
2014/07/04 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
大学生支教感言
2015/08/01 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书