在正确的时间拥有正确的代码片段,绝对是是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