10个超级有用的PHP代码小片段

本文分享了10个实用的PHP代码片段,包括页面缓存、距离计算、文件下载等功能,适用于不同场景的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

能够利用好的代码片段来进行设计,将极大的缩短设计的时间。今天,这里有10个真的很棒的PHP代码小片段,我希望能够在今后的设计中帮助到你们。

超级简单的页面缓存

当你的项目不是基于CMS或者框架的话,给你的页面添加缓存是一个很棒的主意。下面的代码非常简单,但是对于小网站运行得很好。

  1. <?php
  2.     // define the path and name of cached file
  3.     $cachefile = 'cached-files/'.date('M-d-Y').'.php';
  4.     // define how long we want to keep the file in seconds. I set mine to 5 hours.
  5.     $cachetime = 18000;
  6.     // Check if the cached file is still fresh. If it is, serve it up and exit.
  7.     if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
  8.     include($cachefile);
  9.         exit;
  10.     }
  11.     // if there is either no file OR the file to too old, render the page and capture the HTML.
  12.     ob_start();
  13. ?>
  14.     <html>
  15.         output all your html here.
  16.     </html>
  17. <?php
  18.     // We're done! Save the cached content to a file
  19.     $fp = fopen($cachefile, 'w');
  20.     fwrite($fp, ob_get_contents());
  21.     fclose($fp);
  22.     // finally send browser output
  23.     ob_end_flush();
  24. ?>

Credit: Wes Bos

在PHP中计算距离

这是一个十分好用的函数,可以用经度和纬度计算点A与点B之间的距离。这个函数可以返回以英里,公里或者海里为单位的距离。

  1. function distance($lat1, $lon1, $lat2, $lon2, $unit) { 
  2.  
  3.   $theta = $lon1 - $lon2;
  4.   $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2))cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  5.   $dist = acos($dist);
  6.   $dist = rad2deg($dist);
  7.   $miles = $dist * 60 * 1.1515;
  8.   $unit = strtoupper($unit);
  9.  
  10.   if ($unit == "K") {
  11.     return ($miles * 1.609344);
  12.   } else if ($unit == "N") {
  13.       return ($miles * 0.8684);
  14.     } else {
  15.         return $miles;
  16.       }
  17. }

用法:

  1. echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometers";

Credits: PHP Snippets.info

将秒数转换为时间(年、月、日、小时……)

这个函数将会把秒数转换成时间,以年、月、周、日等等为单位。

  1. function Sec2Time($time){
  2.   if(is_numeric($time)){
  3.     $value = array(
  4.       "years" => 0, "days" => 0, "hours" => 0,
  5.       "minutes" => 0, "seconds" => 0,
  6.     );
  7.     if($time >= 31556926){
  8.       $value["years"] = floor($time/31556926);
  9.       $time = ($time%31556926);
  10.     }
  11.     if($time >= 86400){
  12.       $value["days"] = floor($time/86400);
  13.       $time = ($time%86400);
  14.     }
  15.     if($time >= 3600){
  16.       $value["hours"] = floor($time/3600);
  17.       $time = ($time%3600);
  18.     }
  19.     if($time >= 60){
  20.       $value["minutes"] = floor($time/60);
  21.       $time = ($time%60);
  22.     }
  23.     $value["seconds"] = floor($time);
  24.     return (array) $value;
  25.   }else{
  26.     return (bool) FALSE;
  27.   }
  28. }

Credits

强制文件下载

有些文件,例如mp3,会在客户端浏览器中播放。如果你想要强制下载这些文件,这不是问题,下面的代码片段做的很棒。

  1. function downloadFile($file){
  2.         $file_name = $file;
  3.         $mime = 'application/force-download';
  4.     header('Pragma: public');     // required
  5.     header('Expires: 0');        // no cache
  6.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  7.     header('Cache-Control: private',false);
  8.     header('Content-Type: '.$mime);
  9.     header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
  10.     header('Content-Transfer-Encoding: binary');
  11.     header('Connection: close');
  12.     readfile($file_name);        // push it out
  13.     exit();
  14. }

Credit: Alessio Delmonti

用Google API来得到目前的天气情况

想要知道今天的天气吗?这个只有3行的代码可以做到!你唯一要做的就是把第一行中的地址改成你想要显示天气的地址。

  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();

Credit: Ortanotes

基本的whois查询

Whois查询是十分有用的,可以得到域名的所有者,建立时间等等信息。利用PHP和unix的命令”whois”, 弄一个基本的PHP whois查询是很简单的。请注意,unix的whois命令必须在你的服务器上已经安装好。

  1. $domains = array('home.pl', 'w3c.org');
  2.  
  3. function creation_date($domain) {
  4.     $lines = explode("\n", `whois $domain`);
  5.     foreach($lines as $line) {
  6.         if(strpos(strtolower($line), 'created') !== false) {
  7.             return $line;
  8.         }
  9.     }
  10.  
  11.     return false;
  12. }
  13.  
  14. foreach($domains as $d) {
  15.     echo creation_date($d) . "\n";
  16. }

Credits: Snipplr

从具体地址中得到经度与纬度信息

因为Google Maps API非常流行,开发者们经常需要得到具体地址的经度和纬度信息。这是一个非常有用的函数,用地址作为它的参数,返回一个数据数组,其中包括经度和纬度信息。

  1. function getLatLong($address){
  2.     if (!is_string($address))die("All Addresses must be passed as a string");
  3.     $_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address));
  4.     $_result = false;
  5.     if($_result = file_get_contents($_url)) {
  6.         if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false;
  7.         preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match);
  8.         $_coords['lat'] = $_match[1];
  9.         $_coords['long'] = $_match[2];
  10.     }
  11.     return $_coords;
  12. }

Credits: Snipplr

用PHP和Google得到网站的小图标(favicon)

这些日子,许多网站和网上应用使用了其他网站小图标。利用Google和PHP在你的网站上显示一个小图标是十分简单的。

  1. function get_favicon($url){
  2.   $url = str_replace("http://",'',$url);
  3.   return "http://www.google.com/s2/favicons?domain=".$url;
  4. }

Credits: Snipplr

计算Paypal费用

每个人在使用这个流行的在线付款工具的时候不免要付费。所以这里有一个PHP函数,很简单的计算该付的费用。

  1. function paypalFees($sub_total, $round_fee) {
  2.  
  3.     // Set Fee Rate Variables
  4.     $fee_percent = '3.4'; // Paypal's percentage rate per transaction (3.4% in UK)
  5.     $fee_cash    = '0.20'; // Paypal's set cash amount per transaction (£0.20 in UK)
  6.  
  7.     // Calculate Fees
  8.     $paypal_fee = ((($sub_total / 100) * $fee_percent) + $fee_cash);
  9.  
  10.     if ($round_fee == true) {
  11.         $paypal_fee = ceil($paypal_fee);
  12.     }
  13.  
  14.     // Calculate Grand Total
  15.     $grand_total = ($sub_total + $paypal_fee);
  16.  
  17.     // Tidy Up Numbers
  18.     $sub_total   = number_format($sub_total, 2, '.', ',');
  19.     $paypal_fee  = number_format($paypal_fee, 2, '.', ',');
  20.     $grand_total = number_format($grand_total, 2, '.', ',');
  21.  
  22.     // Return Array
  23.     return array('grand_total'=>$grand_total, 'paypal_fee'=>$paypal_fee, 'sub_total'=>$sub_total);
  24. }

Credits: Snipplr

:arrow: 最后一个有点错误,移除了~

原文链接:http://www.catswhocode.com/blog/10-super-useful-php-snippets


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值