超级实用的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 相关文章推荐
PHP分页显示制作详细讲解
Nov 19 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php生成html文件方法总结
Dec 01 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
纯js实现手风琴效果代码
2020/04/17 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python多进程机制实例详解
2015/07/02 Python
python绘制中国大陆人口热力图
2018/11/07 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python如何使用代码运行助手
2020/07/03 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
2014年庆元旦活动方案
2014/02/15 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
法人委托书范本格式
2014/09/15 职场文书
暑期社会实践证明书
2014/11/17 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
催款律师函范文
2015/05/27 职场文书
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS