在正确的时间拥有正确的代码片段,绝对是是Web开发人员的救星。今天,为大家已经收集了10个很棒的PHP代码片段,希望对您的开发有所帮助。
Super simple page caching
当你的项目没有基于CMS框架搭建时,利用下面这段代码就能够在你的页面上实现一个简单的缓存系统。非常适合于小型网站。
03 |
$cachefile = 'cached-files/'.date('M-d-Y').'.php'; |
07 |
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { |
15 |
output all your html here. |
19 |
$fp = fopen($cachefile, 'w'); |
20 |
fwrite($fp, ob_get_contents()); |
Calculate distances in PHP
这里是一个非常方便的功能,使用经度和纬度来计算从A点到B点的距离。该函数可以返回英里,公里,海里的距离。
01 |
function distance($lat1, $lon1, $lat2, $lon2, $unit) { |
03 |
$theta = $lon1 - $lon2; |
04 |
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); |
06 |
$dist = rad2deg($dist); |
07 |
$miles = $dist * 60 * 1.1515; |
08 |
$unit = strtoupper($unit); |
11 |
return ($miles * 1.609344); |
12 |
} else if ($unit == "N") { |
13 |
return ($miles * 0.8684); |
Usage:
1 |
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometers"; |
Convert seconds to time (years, months, days, hours…)
这个方法用于将秒数转换成年,月,周,日等。
01 |
function Sec2Time($time){ |
02 |
if(is_numeric($time)){ |
04 |
"years" => 0, "days" => 0, "hours" => 0, |
05 |
"minutes" => 0, "seconds" => 0, |
07 |
if($time >= 31556926){ |
08 |
$value["years"] = floor($time/31556926); |
09 |
$time = ($time%31556926); |
12 |
$value["days"] = floor($time/86400); |
13 |
$time = ($time%86400); |
16 |
$value["hours"] = floor($time/3600); |
20 |
$value["minutes"] = floor($time/60); |
23 |
$value["seconds"] = floor($time); |
24 |
return (array) $value; |
Force file download
有一些文件,比较mp3,通常会直接在客户端浏览器中播放。假如你希望强制下载这些文件,没有问题,下面这些代码将能够帮助你实现这个功能。
01 |
function downloadFile($file){ |
03 |
$mime = 'application/force-download'; |
04 |
header('Pragma: public'); |
06 |
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
07 |
header('Cache-Control: private',false); |
08 |
header('Content-Type: '.$mime); |
09 |
header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); |
10 |
header('Content-Transfer-Encoding: binary'); |
11 |
header('Connection: close'); |
Get current weather using Google API
你是否想知道今天的天气?利用下面这段代码,只有3行代码能够实现。将第一段代码中的ADDRESS替换成想知道的地方。
1 |
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=ADDRESS'); |
2 |
$information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition"); |
3 |
echo $information[0]->attributes(); |
Basic PHP whois
利用下面这段代码可以取得一个域名的注册基本信息包括:所有者、创建时间,注册情况等信息。但需要在你的服务器上安装whois unix command,这段代码才能起作用。
01 |
$domains = array('home.pl', 'w3c.org'); |
03 |
function creation_date($domain) { |
04 |
$lines = explode("\n", `whois $domain`); |
05 |
foreach($lines as $line) { |
06 |
if(strpos(strtolower($line), 'created') !== false) { |
14 |
foreach($domains as $d) { |
15 |
echo creation_date($d) . "\n"; |
Get latitude and longitude from an adress
利用下面这段代码可以从Google Maps API取得一个地方的经度和纬度。
01 |
function getLatLong($address){ |
02 |
if (!is_string($address))die("All Addresses must be passed as a string"); |
03 |
$_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address)); |
05 |
if($_result = file_get_contents($_url)) { |
06 |
if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false; |
07 |
preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match); |
08 |
$_coords['lat'] = $_match[1]; |
09 |
$_coords['long'] = $_match[2]; |
Get domain favicon using PHP and Google
最近,有许多网站或Web应用使用Google提供的服务来获取网站的favicons图标。下面这段代码,可以帮助您实现这个功能。
1 |
function get_favicon($url){ |
2 |
$url = str_replace("http://",'',$url); |
3 |
return "http://www.google.com/s2/favicons?domain=".$url; |
Calculate Paypal fees
Ah, Paypal fees. Every person who ever used the popular online payment service had to pay their fees. So what about a PHP function to easily calculate the fee for a specific amount?
01 |
function paypalFees($sub_total, $round_fee) { |
08 |
$paypal_fee = ((($sub_total / 100) * $fee_percent) + $fee_cash); |
10 |
if ($round_fee == true) { |
11 |
$paypal_fee = ceil($paypal_fee); |
15 |
$grand_total = ($sub_total + $paypal_fee); |
18 |
$sub_total = number_format($sub_total, 2, '.', ','); |
19 |
$paypal_fee = number_format($paypal_fee, 2, '.', ','); |
20 |
$grand_total = number_format($grand_total, 2, '.', ','); |
23 |
return array('grand_total'=>$grand_total, 'paypal_fee'=>$paypal_fee, 'sub_total'=>$sub_total); |
原文:http://css.dzone.com/news/10-super-useful-php-snippets