46 個很是有用的 PHP 代碼片斷

在編寫代碼的時候有個神奇的工具老是好的!下面這裏收集了 40+ PHP 代碼片斷,能夠幫助你開發 PHP 項目。php

這些 PHP 片斷對於 PHP 初學者也很是有幫助,很是容易學習,讓咱們開始學習吧~html

1. 發送 SMS

在開發 Web 或者移動應用的時候,常常會遇到須要發送 SMS 給用戶,或者由於登陸緣由,或者是爲了發送信息。下面的 PHP 代碼就實現了發送 SMS 的功能。node

爲了使用任何的語言發送 SMS,須要一個 SMS gateway。大部分的 SMS 會提供一個 API,這裏是使用 MSG91做爲 SMS gateway。mysql

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function  send_sms( $mobile , $msg )
{
$authKey  "XXXXXXXXXXX" ;
date_default_timezone_set( "Asia/Kolkata" );
$date  strftime ( "%Y-%m-%d %H:%M:%S" );
//Multiple mobiles numbers separated by comma
$mobileNumber  $mobile ;
  
//Sender ID,While using route4 sender id should be 6 characters long.
$senderId  "IKOONK" ;
  
//Your message to send, Add URL encoding here.
$message  = urlencode( $msg );
  
//Define route 
$route  "template" ;
//Prepare you post parameters
$postData  array (
     'authkey'  =>  $authKey ,
     'mobiles'  =>  $mobileNumber ,
     'message'  =>  $message ,
     'sender'  =>  $senderId ,
     'route'  =>  $route
);
  
//API URL
$url = "https://control.msg91.com/sendhttp.php" ;
  
// init the resource
$ch  = curl_init();
curl_setopt_array( $ch array (
     CURLOPT_URL =>  $url ,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_POST => true,
     CURLOPT_POSTFIELDS =>  $postData
     //,CURLOPT_FOLLOWLOCATION => true
));
  
  
//Ignore SSL certificate verification
curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, 0);
  
  
//get response
$output  = curl_exec( $ch );
//Print error if any
if (curl_errno( $ch ))
{
     echo  'error:'  . curl_error( $ch );
}
  
curl_close( $ch );
}

 

其中「$authKey = "XXXXXXXXXXX";」須要你輸入你的密碼,「$senderId = "IKOONK";」須要你輸入你的 SenderID。當輸入移動號碼的時候須要指定國家代碼 (好比,美國是 1,印度是 91 )。git

語法:sql

?
1
2
3
4
5
<?php
$message  "Hello World" ;
$mobile  "918112998787" ;
send_sms( $mobile , $message );
?>

 

2. 使用 mandrill 發送郵件

Mandrill 是一款強大的 SMTP 提供器。開發者傾向於使用一個第三方 SMTP provider 來獲取更好的收件交付。數據庫

下面的函數中,你須要把 「Mandrill.php」 放在同一個文件夾,做爲 PHP 文件,這樣就能夠使用TA來發送郵件。apache

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function  send_email( $to_email , $subject , $message1 )
{
require_once  'Mandrill.php' ;
$apikey  'XXXXXXXXXX' //specify your api key here
$mandrill  new  Mandrill( $apikey );
  
$message  new  stdClass();
$message ->html =  $message1 ;
$message ->text =  $message1 ;
$message ->subject =  $subject ;
$message ->from_email =  "blog@koonk.com" ; //Sender Email
$message ->from_name  =  "KOONK" ; //Sender Name
$message ->to =  array ( array ( "email"  =>  $to_email ));
$message ->track_opens = true;
  
$response  $mandrill ->messages->send( $message );
}

「$apikey = 'XXXXXXXXXX'; //specify your api key here」這裏須要你指定你的 API 密鑰(從 Mandrill 帳戶中得到)。json

語法:windows

?
1
2
3
4
5
6
<?php
$to  "abc@example.com" ;
$subject  "This is a test email" ;
$message  "Hello World!" ;
send_email( $to , $subject , $message );
?>

爲了達到最好的效果,最好按照 Mandrill 的教程去配置 DNS。

3. PHP 函數:阻止 SQL 注入

SQL 注入或者 SQLi 常見的攻擊網站的手段,使用下面的代碼能夠幫助你防止這些工具。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function  clean( $input )
{
     if  ( is_array ( $input ))
     {
         foreach  ( $input  as  $key  =>  $val )
          {
             $output [ $key ] = clean( $val );
             // $output[$key] = $this->clean($val);
         }
     }
     else
     {
         $output  = (string)  $input ;
         // if magic quotes is on then use strip slashes
         if  (get_magic_quotes_gpc()) 
         {
             $output  stripslashes ( $output );
         }
         // $output = strip_tags($output);
         $output  = htmlentities( $output , ENT_QUOTES,  'UTF-8' );
     }
// return the clean text
     return  $output ;
}

語法:

?
1
2
3
4
5
<?php
$text  "<script>alert(1)</script>" ;
$text  = clean( $text );
echo  $text ;
?>

4. 檢測用戶位置

使用下面的函數,能夠檢測用戶是在哪一個城市訪問你的網站

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function  detect_city( $ip ) {
         
         $default  'UNKNOWN' ;
  
         $curlopt_useragent  'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)' ;
         
         $url  'http://ipinfodb.com/ip_locator.php?ip='  . urlencode( $ip );
         $ch  = curl_init();
         
         $curl_opt  array (
             CURLOPT_FOLLOWLOCATION  => 1,
             CURLOPT_HEADER      => 0,
             CURLOPT_RETURNTRANSFER  => 1,
             CURLOPT_USERAGENT   =>  $curlopt_useragent ,
             CURLOPT_URL       =>  $url ,
             CURLOPT_TIMEOUT         => 1,
             CURLOPT_REFERER         =>  'http://'  $_SERVER [ 'HTTP_HOST' ],
         );
         
         curl_setopt_array( $ch $curl_opt );
         
         $content  = curl_exec( $ch );
         
         if  (! is_null ( $curl_info )) {
             $curl_info  = curl_getinfo( $ch );
         }
         
         curl_close( $ch );
         
         if  ( preg_match( '{<li>City : ([^<]*)</li>}i' $content $regs ) )  {
             $city  $regs [1];
         }
         if  ( preg_match( '{<li>State/Province : ([^<]*)</li>}i' $content $regs ) )  {
             $state  $regs [1];
         }
  
         if $city != ''  &&  $state != ''  ){
           $location  $city  ', '  $state ;
           return  $location ;
         } else {
           return  $default
         }
         
     }

語法:

?
1
2
3
4
5
<?php
$ip  $_SERVER [ 'REMOTE_ADDR' ];
$city  = detect_city( $ip );
echo  $city ;
?>

 

5. 獲取 Web 頁面的源代碼

使用下面的函數,能夠獲取任意 Web 頁面的 HTML 代碼

?
1
2
3
4
5
6
7
8
9
function  display_sourcecode( $url )
{
$lines  = file( $url );
$output  "" ;
foreach  ( $lines  as  $line_num  =>  $line ) { 
     // loop thru each line and prepend line numbers
     $output .=  "Line #<b>{$line_num}</b> : "  . htmlspecialchars( $line ) .  "<br>\n" ;
}
}

語法:

?
1
2
3
4
5
<?php
$url  "http://blog.koonk.com" ;
$source  = display_sourcecode( $url );
echo  $source ;
?>

6. 計算喜歡你的 Facebook 頁面的用戶

?
1
2
3
4
5
6
function  fb_fan_count( $facebook_name )
{
     $data  = json_decode( file_get_contents ( "https://graph.facebook.com/" . $facebook_name ));
     $likes  $data ->likes;
     return  $likes ;
}

語法:

?
1
2
3
4
5
<?php
$page  "koonktechnologies" ;
$count  = fb_fan_count( $page );
echo  $count ;
?>

7. 肯定任意圖片的主導顏色

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function  dominant_color( $image )
{
$i  = imagecreatefromjpeg( $image );
for  ( $x =0; $x <imagesx( $i ); $x ++) {
     for  ( $y =0; $y <imagesy( $i ); $y ++) {
         $rgb  = imagecolorat( $i , $x , $y );
         $r    = ( $rgb  >> 16) & 0xFF;
         $g    = ( $rgb  >>  & 0xFF;
         $b    $rgb  & 0xFF;
         $rTotal  +=  $r ;
         $gTotal  +=  $g ;
         $bTotal  +=  $b ;
         $total ++;
     }
}
$rAverage  round ( $rTotal / $total );
$gAverage  round ( $gTotal / $total );
$bAverage  round ( $bTotal / $total );
}

8. whois 查詢

使用下面的函數能夠獲取任何域名用戶的完整細節

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function  whois_query( $domain ) {
  
     // fix the domain name:
     $domain  strtolower (trim( $domain ));
     $domain  = preg_replace( '/^http:\/\//i' '' $domain );
     $domain  = preg_replace( '/^www\./i' '' $domain );
     $domain  explode ( '/' $domain );
     $domain  = trim( $domain [0]);
  
     // split the TLD from domain name
     $_domain  explode ( '.' $domain );
     $lst  count ( $_domain )-1;
     $ext  $_domain [ $lst ];
  
     // You find resources and lists 
     // like these on wikipedia: 
     //
     // http://de.wikipedia.org/wiki/Whois
     //
     $servers  array (
         "biz"  =>  "whois.neulevel.biz" ,
         "com"  =>  "whois.internic.net" ,
         "us"  =>  "whois.nic.us" ,
         "coop"  =>  "whois.nic.coop" ,
         "info"  =>  "whois.nic.info" ,
         "name"  =>  "whois.nic.name" ,
         "net"  =>  "whois.internic.net" ,
         "gov"  =>  "whois.nic.gov" ,
         "edu"  =>  "whois.internic.net" ,
         "mil"  =>  "rs.internic.net" ,
         "int"  =>  "whois.iana.org" ,
         "ac"  =>  "whois.nic.ac" ,
         "ae"  =>  "whois.uaenic.ae" ,
         "at"  =>  "whois.ripe.net" ,
         "au"  =>  "whois.aunic.net" ,
         "be"  =>  "whois.dns.be" ,
         "bg"  =>  "whois.ripe.net" ,
         "br"  =>  "whois.registro.br" ,
         "bz"  =>  "whois.belizenic.bz" ,
         "ca"  =>  "whois.cira.ca" ,
         "cc"  =>  "whois.nic.cc" ,
         "ch"  =>  "whois.nic.ch" ,
         "cl"  =>  "whois.nic.cl" ,
         "cn"  =>  "whois.cnnic.net.cn" ,
         "cz"  =>  "whois.nic.cz" ,
         "de"  =>  "whois.nic.de" ,
         "fr"  =>  "whois.nic.fr" ,
         "hu"  =>  "whois.nic.hu" ,
         "ie"  =>  "whois.domainregistry.ie" ,
         "il"  =>  "whois.isoc.org.il" ,
         "in"  =>  "whois.ncst.ernet.in" ,
         "ir"  =>  "whois.nic.ir" ,
         "mc"  =>  "whois.ripe.net" ,
         "to"  =>  "whois.tonic.to" ,
         "tv"  =>  "whois.tv" ,
         "ru"  =>  "whois.ripn.net" ,
         "org"  =>  "whois.pir.org" ,
         "aero"  =>  "whois.information.aero" ,
         "nl"  =>  "whois.domain-registry.nl"
     );
  
     if  (!isset( $servers [ $ext ])){
         die ( 'Error: No matching nic server found!' );
     }
  
     $nic_server  $servers [ $ext ];
  
     $output  '' ;
  
     // connect to whois server:
     if  ( $conn  fsockopen  ( $nic_server , 43)) {
         fputs ( $conn $domain . "\r\n" );
         while (! feof ( $conn )) {
             $output  .=  fgets ( $conn ,128);
         }
         fclose( $conn );
     }
     else  die ( 'Error: Could not connect to '  $nic_server  '!' ); }
  
     return  $output ;
}

語法:

?
1
2
3
4
5
<?php
$domain  "http://www.blog.koonk.com" ;
$result  = whois_query( $domain );
print_r( $result );
?>

9. 驗證郵箱地址

有時候,當在網站填寫表單,用戶可能會輸入錯誤的郵箱地址,這個函數能夠驗證郵箱地址是否有效。

?
1
2
3
4
5
6
7
8
9
function  is_validemail( $email )
{
$check  = 0;
if (filter_var( $email ,FILTER_VALIDATE_EMAIL))
{
$check  = 1;
}
return  $check ;
}

語法:

?
1
2
3
4
5
6
<?php
$email  "blog@koonk.com" ;
$check  = is_validemail( $email );
echo  $check ;
// If the output is 1, then email is valid.
?>

10. 獲取用戶的真實  IP

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function  getRealIpAddr()  
{  
     if  (!emptyempty( $_SERVER [ 'HTTP_CLIENT_IP' ]))  
     {  
         $ip = $_SERVER [ 'HTTP_CLIENT_IP' ];  
     }  
     elseif  (!emptyempty( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]))  
     //to check ip is pass from proxy  
     {  
         $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];  
     }  
     else  
     {  
         $ip = $_SERVER [ 'REMOTE_ADDR' ];  
     }  
     return  $ip ;  
}

語法:

?
1
2
3
4
<?php
$ip  = getRealIpAddr();
echo  $ip ;
?>

11. 轉換 URL:從字符串變成超連接

若是你正在開發論壇,博客或者是一個常規的表單提交,不少時候都要用戶訪問一個網站。使用這個函數,URL 字符串就能夠自動的轉換爲超連接。

?
1
2
3
4
5
6
7
8
9
10
11
function  makeClickableLinks( $text
{  
  $text  eregi_replace ( '(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)' ,  
  '<a href="\1">\1</a>' $text );  
  $text  eregi_replace ( '([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)' ,  
  '\1<a href="http://\2">\2</a>' $text );  
  $text  eregi_replace ( '([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})' ,  
  '<a href="mailto:\1">\1</a>' $text );  
   
return  $text ;  
}

語法:

?
1
2
3
4
5
<?php
$text  "This is my first post on http://blog.koonk.com" ;
$text  = makeClickableLinks( $text );
echo  $text ;
?>

12. 阻止多個 IP 訪問你的網站

這個代碼片斷能夠方便你禁止某些特定的 IP 地址訪問你的網站

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if  ( ! file_exists ( 'blocked_ips.txt' ) ) {
  $deny_ips  array (
   '127.0.0.1' ,
   '192.168.1.1' ,
   '83.76.27.9' ,
   '192.168.1.163'
  );
else  {
  $deny_ips  = file( 'blocked_ips.txt' );
}
// read user ip adress:
$ip  = isset( $_SERVER [ 'REMOTE_ADDR' ]) ? trim( $_SERVER [ 'REMOTE_ADDR' ]) :  '' ;
  
// search current IP in $deny_ips array
if  ( ( array_search ( $ip $deny_ips ))!== FALSE ) {
  // address is blocked:
  echo  'Your IP adress (' . $ip . ') was blocked!' ;
  exit ;
}

13. 強制性文件下載

若是你須要下載特定的文件而不用另開新窗口,下面的代碼片斷能夠幫助你。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function  force_download( $file
     $dir       "../log/exports/"
     if  ((isset( $file ))&&( file_exists ( $dir . $file ))) { 
        header( "Content-type: application/force-download" ); 
        header( 'Content-Disposition: inline; filename="'  $dir . $file  '"' ); 
        header( "Content-Transfer-Encoding: Binary" ); 
        header( "Content-length: " . filesize ( $dir . $file )); 
        header( 'Content-Type: application/octet-stream' ); 
        header( 'Content-Disposition: attachment; filename="'  $file  '"' ); 
        readfile( "$dir$file" ); 
     else 
        echo  "No file selected"
    
}

語法:

?
1
2
3
<php
force_download( "image.jpg" );
?>

14. 建立 JSON 數據

使用下面的 PHP 片斷能夠建立 JSON 數據,能夠方便你建立移動應用的 Web 服務

?
1
2
$json_data  array  ( 'id' =>1, 'name' => "Mohit" );
echo  json_encode( $json_data );

15. 壓縮 zip 文件

使用下面的 PHP 片斷能夠即時壓縮 zip 文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function  create_zip( $files  array (), $destination  '' , $overwrite  = false) {  
     //if the zip file already exists and overwrite is false, return false  
     if ( file_exists ( $destination ) && ! $overwrite ) {  return  false; }  
     //vars  
     $valid_files  array ();  
     //if files were passed in...  
     if ( is_array ( $files )) {  
         //cycle through each file  
         foreach ( $files  as  $file ) {  
             //make sure the file exists  
             if ( file_exists ( $file )) {  
                 $valid_files [] =  $file ;  
             }  
         }  
     }  
     //if we have good files...  
     if ( count ( $valid_files )) {  
         //create the archive  
         $zip  new  ZipArchive();  
         if ( $zip ->open( $destination , $overwrite  ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {  
             return  false;  
         }  
         //add the files  
         foreach ( $valid_files  as  $file ) {  
             $zip ->addFile( $file , $file );  
         }  
         //debug  
         //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;  
           
         //close the zip -- done!  
         $zip ->close();  
           
         //check to make sure the file exists  
         return  file_exists ( $destination );  
     }  
     else  
     {  
         return  false;  
     }  
}

語法:

?
1
2
3
4
<?php
$files = array ( 'file1.jpg' , 'file2.jpg' , 'file3.gif' );  
create_zip( $files , 'myzipfile.zip' , true);
?>

16. 解壓文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function unzip( $location , $newLocation )
{
         if ( exec ( "unzip $location" , $arr )){
             mkdir ( $newLocation );
             for ( $i = 1; $i < count ( $arr ); $i ++){
                 $file = trim(preg_replace( "~inflating: ~" , "" , $arr [ $i ]));
                 copy ( $location . '/' . $file , $newLocation . '/' . $file );
                 unlink( $location . '/' . $file );
             }
             return TRUE;
         } else {
             return FALSE;
         }
}

語法:

?
1
2
3
<?php
unzip( 'test.zip' , 'unziped/test' ); //File would be unzipped in unziped/test folder
?>

17. 縮放圖片

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function resize_image( $filename , $tmpname , $xmax , $ymax )  
{  
     $ext = explode ( "." , $filename );  
     $ext = $ext [ count ( $ext )-1];  
   
     if ( $ext == "jpg" || $ext == "jpeg" )  
         $im = imagecreatefromjpeg( $tmpname );  
     elseif ( $ext == "png" )  
         $im = imagecreatefrompng( $tmpname );  
     elseif ( $ext == "gif" )  
         $im = imagecreatefromgif( $tmpname );  
       
     $x = imagesx( $im );  
     $y = imagesy( $im );  
       
     if ( $x <= $xmax && $y <= $ymax )  
         return $im ;  
   
     if ( $x >= $y ) {  
         $newx = $xmax ;  
         $newy = $newx * $y / $x ;  
     }  
     else {  
         $newy = $ymax ;  
         $newx = $x / $y * $newy ;  
     }  
       
     $im2 = imagecreatetruecolor( $newx , $newy );  
     imagecopyresized( $im2 , $im , 0, 0, 0, 0, floor ( $newx ), floor ( $newy ), $x , $y );  
     return $im2 ;   
}

18. 使用 mail() 發送郵件

以前咱們提供瞭如何使用 Mandrill 發送郵件的 PHP 代碼片斷,可是若是你不想使用第三方服務,那麼能夠使用下面的 PHP 代碼片斷。

?
1
2
3
4
5
6
7
8
9
10
function send_mail( $to , $subject , $body )
{
$headers = "From: KOONK\r\n" ;
$headers .= "Reply-To: blog@koonk.com\r\n" ;
$headers .= "Return-Path: blog@koonk.com\r\n" ;
$headers .= "X-Mailer: PHP5\n" ;
$headers .= 'MIME-Version: 1.0' . "\n" ;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n" ;
mail( $to , $subject , $body , $headers );
}

語法:

?
1
2
3
4
5
6
<?php
$to = "admin@koonk.com" ;
$subject = "This is a test mail" ;
$body = "Hello World!" ;
send_mail( $to , $subject , $body );
?>

19. 把秒轉換整天數,小時數和分鐘

?
1
2
3
4
5
6
7
function secsToStr( $secs ) {
     if ( $secs >=86400){ $days = floor ( $secs /86400); $secs = $secs %86400; $r = $days . ' day' ; if ( $days <>1){ $r .= 's' ;} if ( $secs >0){ $r .= ', ' ;}}
     if ( $secs >=3600){ $hours = floor ( $secs /3600); $secs = $secs %3600; $r .= $hours . ' hour' ; if ( $hours <>1){ $r .= 's' ;} if ( $secs >0){ $r .= ', ' ;}}
     if ( $secs >=60){ $minutes = floor ( $secs /60); $secs = $secs %60; $r .= $minutes . ' minute' ; if ( $minutes <>1){ $r .= 's' ;} if ( $secs >0){ $r .= ', ' ;}}
     $r .= $secs . ' second' ; if ( $secs <>1){ $r .= 's' ;}
     return $r ;
}

語法:

?
1
2
3
4
5
<?php
$seconds = "56789" ;
$output = secsToStr( $seconds );
echo $output ;
?>

20. 數據庫鏈接

鏈接 MySQL 數據庫

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$DBNAME = 'koonk' ;
$HOST = 'localhost' ;
$DBUSER = 'root' ;
$DBPASS = 'koonk' ;
$CONNECT = mysql_connect( $HOST , $DBUSER , $DBPASS );
if (! $CONNECT )
{
     echo 'MySQL Error: ' .mysql_error();
}
$SELECT = mysql_select_db( $DBNAME );
if (! $SELECT )
{
     echo 'MySQL Error: ' .mysql_error();
}
?>

21. 目錄清單

使用下面的 PHP 代碼片斷能夠在一個目錄中列出全部文件和文件夾

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function list_files( $dir )
{
     if ( is_dir ( $dir ))
     {
         if ( $handle = opendir( $dir ))
         {
             while (( $file = readdir( $handle )) !== false)
             {
                 if ( $file != "." &amp;&amp; $file != ".." &amp;&amp; $file != "Thumbs.db" /*pesky windows, images..*/ )
                 {
                     echo '<a target="_blank" href="' . $dir . $file . '">' . $file . '</a><br>' . "\n" ;
                 }
             }
             closedir ( $handle );
         }
     }
}

語法:

?
1
2
3
<?php
     list_files( "images/" ); //This will list all files of images folder
?>

22. 檢測用戶語言

使用下面的 PHP 代碼片斷能夠檢測用戶瀏覽器所使用的語言

?
1
2
3
4
5
6
7
8
9
10
11
12
function get_client_language( $availableLanguages , $default = 'en' ){
     if (isset( $_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ])) {
         $langs = explode ( ',' , $_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ]);
         foreach ( $langs as $value ){
             $choice = substr ( $value ,0,2);
             if (in_array( $choice , $availableLanguages )){
                 return $choice ;
             }
         }
     }
     return $default ;
}

23. 查看 CSV 文件

?
1
2
3
4
5
6
7
8
function readCSV( $csvFile ){
     $file_handle = fopen ( $csvFile , 'r' );
     while (! feof ( $file_handle ) ) {
         $line_of_text [] = fgetcsv ( $file_handle , 1024);
     }
     fclose( $file_handle );
     return $line_of_text ;
}

語法:

?
1
2
3
4
5
<?php
$csvFile = "test.csv" ;
$csv = readCSV( $csvFile );
$a = csv[0][0]; // This will get value of Column 1 & Row 1
?>

24. 從 PHP 數據建立 CSV 文件

?
1
2
3
4
5
6
7
8
9
10
11
12
function generateCsv( $data , $delimiter = ',' , $enclosure = '"' ) {
    $handle = fopen ( 'php://temp' , 'r+' );
    foreach ( $data as $line ) {
           fputcsv ( $handle , $line , $delimiter , $enclosure );
    }
    rewind ( $handle );
    while (! feof ( $handle )) {
           $contents .= fread ( $handle , 8192);
    }
    fclose( $handle );
    return $contents ;
}

語法:

?
1
2
3
4
5
<?php
$data [0] = "apple" ;
$data [1] = "oranges" ;
generateCsv( $data , $delimiter = ',' , $enclosure = '"' );
?>

25. 解析 XML 數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$xml_string ="<?xml version= '1.0' ?>
<moleculedb>
     <molecule name= 'Benzine' >
         <symbol>ben</symbol>
         <code>A</code>
     </molecule>
     <molecule name= 'Water' >
         <symbol>h2o</symbol>
         <code>K</code>
     </molecule>
</moleculedb>";
  
//load the xml string using simplexml function
$xml = simplexml_load_string( $xml_string );
  
//loop through the each node of molecule
foreach ( $xml ->molecule as $record )
{
    //attribute are accessted by
    echo $record [ 'name' ], '  ' ;
    //node are accessted by -> operator
    echo $record ->symbol, '  ' ;
    echo $record ->code, '<br />' ;
}

26. 解析 JSON 數據

?
1
2
3
4
5
$json_string = '{"id":1,"name":"rolf","country":"russia","office":["google","oracle"]} ' ;
$obj =json_decode( $json_string );
//print the parsed data
echo $obj ->name; //displays rolf
echo $obj ->office[0]; //displays google

27. 獲取當前頁面 URL

這個 PHP 片斷能夠幫助你讓用戶登陸後直接跳轉到以前瀏覽的頁面

?
1
2
3
4
5
6
function current_url()
{
$url = "http://" . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'REQUEST_URI' ];
$validURL = str_replace ( "&" , "&amp;" , $url );
return validURL;
}

語法:

?
1
2
3
<?php
echo "Currently you are on: " .current_url();
?>

28. 從任意的 Twitter 帳號獲取最新的 Tweet 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function my_twitter( $username )
{
      $no_of_tweets = 1;
      $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $no_of_tweets ;
      $xml = simplexml_load_file( $feed );
     foreach ( $xml ->children() as $child ) {
         foreach ( $child as $value ) {
             if ( $value ->getName() == "link" ) $link = $value [ 'href' ];
             if ( $value ->getName() == "content" ) {
                 $content = $value . "" ;
         echo '<p class="twit">' . $content . ' <a class="twt" href="' . $link . '" title="">&nbsp; </a></p>' ;
             }    
         }
     }    
}

語法:

?
1
2
3
4
<?php
$handle = "koonktech" ;
my_twitter( $handle );
?>

29. 轉發數量

使用這個 PHP 片斷能夠檢測你的頁面 URL 有多少轉發數量

?
1
2
3
4
5
6
7
8
9
10
function tweetCount( $url ) {
     $content = file_get_contents ( "http://api.tweetmeme.com/url_info?url=" . $url );
     $element = new SimpleXmlElement( $content );
     $retweets = $element ->story->url_count;
     if ( $retweets ){
         return $retweets ;
     } else {
         return 0;
     }
}

語法:

?
1
2
3
4
5
<?php
$url = "http://blog.koonk.com" ;
$count = tweetCount( $url );
return $count ;
?>

30. 計算兩個日期的差

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
$date1 = date ( 'Y-m-d' );
$date2 = "2015-12-04" ;
$diff = abs ( strtotime ( $date2 ) - strtotime ( $date1 ));
$years = floor ( $diff / (365*60*60*24));
$months = floor (( $diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor (( $diff - $years * 365*60*60*24 - $months *30*60*60*24)/ (60*60*24));
printf( "%d years, %d months, %d days\n" , $years , $months , $days );
-------------------------------------------------------- OR
$date1 = new DateTime( "2007-03-24" );
$date2 = new DateTime( "2009-06-26" );
$interval = $date1 ->diff( $date2 );
echo "difference " . $interval ->y . " years, " . $interval ->m. " months, " . $interval ->d. " days " ;
// shows the total amount of days (not divided into years, months and days like above)
echo "difference " . $interval ->days . " days " ;
-------------------------------------------------------- OR
     
     
/**
  * Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff()
  * implementation by Derick Rethans. Ported to PHP by Emil H, 2011-05-02. No rights reserved.
  *
  * See here for original code:
  * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/tm2unixtime.c?revision=302890&view=markup
  * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/interval.c?revision=298973&view=markup
  */
function _date_range_limit( $start , $end , $adj , $a , $b , $result )
{
     if ( $result [ $a ] < $start ) {
         $result [ $b ] -= intval (( $start - $result [ $a ] - 1) / $adj ) + 1;
         $result [ $a ] += $adj * intval (( $start - $result [ $a ] - 1) / $adj + 1);
     }
     if ( $result [ $a ] >= $end ) {
         $result [ $b ] += intval ( $result [ $a ] / $adj );
         $result [ $a ] -= $adj * intval ( $result [ $a ] / $adj );
     }
     return $result ;
}
function _date_range_limit_days( $base , $result )
{
     $days_in_month_leap = array (31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
     $days_in_month = array (31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
     _date_range_limit(1, 13, 12, "m" , "y" , & $base );
     $year = $base [ "y" ];
     $month = $base [ "m" ];
     if (! $result [ "invert" ]) {
         while ( $result [ "d" ] < 0) {
             $month --;
             if ( $month < 1) {
                 $month += 12;
                 $year --;
             }
             $leapyear = $year % 400 == 0 || ( $year % 100 != 0 && $year % 4 == 0);
             $days = $leapyear ? $days_in_month_leap [ $month ] : $days_in_month [ $month ];
             $result [ "d" ] += $days ;
             $result [ "m" ]--;
         }
     } else {
         while ( $result [ "d" ] < 0) {
             $leapyear = $year % 400 == 0 || ( $year % 100 != 0 && $year % 4 == 0);
             $days = $leapyear ? $days_in_month_leap [ $month ] : $days_in_month [ $month ];
             $result [ "d" ] += $days ;
             $result [ "m" ]--;
             $month ++;
             if ( $month > 12) {
                 $month -= 12;
                 $year ++;
             }
         }
     }
     return $result ;
}
function _date_normalize( $base , $result )
{
     $result = _date_range_limit(0, 60, 60, "s" , "i" , $result );
     $result = _date_range_limit(0, 60, 60, "i" , "h" , $result );
     $result = _date_range_limit(0, 24, 24, "h" , "d" , $result );
     $result = _date_range_limit(0, 12, 12, "m" , "y" , $result );
     $result = _date_range_limit_days(& $base , & $result );
     $result = _date_range_limit(0, 12, 12, "m" , "y" , $result );
     return $result ;
}
/**
  * Accepts two unix timestamps.
  */
function _date_diff( $one , $two )
{
     $invert = false;
     if ( $one > $two ) {
         list( $one , $two ) = array ( $two , $one );
         $invert = true;
     }
     $key = array ( "y" , "m" , "d" , "h" , "i" , "s" );
     $a = array_combine ( $key , array_map ( "intval" , explode ( " " , date ( "Y m d H i s" , $one ))));
     $b = array_combine ( $key , array_map ( "intval" , explode ( " " , date ( "Y m d H i s" , $two ))));
     $result = array ();
     $result [ "y" ] = $b [ "y" ] - $a [ "y" ];
     $result [ "m" ] = $b [ "m" ] - $a [ "m" ];
     $result [ "d" ] = $b [ "d" ] - $a [ "d" ];
     $result [ "h" ] = $b [ "h" ] - $a [ "h" ];
     $result [ "i" ] = $b [ "i" ] - $a [ "i" ];
     $result [ "s" ] = $b [ "s" ] - $a [ "s" ];
     $result [ "invert" ] = $invert ? 1 : 0;
     $result [ "days" ] = intval ( abs (( $one - $two )/86400));
     if ( $invert ) {
         _date_normalize(& $a , & $result );
     } else {
         _date_normalize(& $b , & $result );
     }
     return $result ;
}
$date = "2014-12-04 19:37:22" ;
echo '<pre>' ;
print_r( _date_diff( strtotime ( $date ), time() ) );
echo '</pre>' ;
?>

31. 刪除文件夾內容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Delete ( $path )
{
     if ( is_dir ( $path ) === true)
     {
         $files = array_diff (scandir( $path ), array ( '.' , '..' ));
         foreach ( $files as $file )
         {
             Delete ( realpath ( $path ) . '/' . $file );
         }
         return rmdir ( $path );
     }
     else if ( is_file ( $path ) === true)
     {
         return unlink( $path );
     }
     return false;
}

語法:

?
1
2
3
4
<?php
$path = "images/" ;
Delete ( $path ); // This will delete images folder along with its contents.
?>

32. 搜索和高亮字符串中的關鍵字

?
1
2
3
4
5
6
7
8
9
10
11
function highlighter_text( $text , $words )
{
     $split_words = explode ( " " , $words );
     foreach ( $split_words as $word )
     {
         $color = "#4285F4" ;
         $text = preg_replace( "|($word)|Ui" ,
             "<span style=\"color:" . $color . ";\"><b>$1</b></span>" , $text );
     }
     return $text ;
}

語法:

?
1
2
3
4
5
<?php
$string = "I like chocolates and I like apples" ;
$words = "apple" ;
echo highlighter_text( $string , $words );
?>

33. 寫入文件

?
1
2
3
4
5
6
7
8
9
<?
$filename = 'blog.csv' ;
$fp = fopen ( $filename , 'w' );
$output = " Hello " ;
$output .= " World! " ;
$output .= "\r\n" ;
fputs ( $fp , $output );
fclose( $fp );
?>

34. 根據 URL 下載圖片

?
1
2
3
4
5
6
7
8
9
10
11
12
function imagefromURL( $image , $rename )
{
$ch = curl_init( $image );
curl_setopt( $ch , CURLOPT_HEADER, 0);
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch , CURLOPT_BINARYTRANSFER,1);
$rawdata =curl_exec ( $ch );
curl_close ( $ch );
$fp = fopen ( "$rename" , 'w' );
fwrite( $fp , $rawdata );
fclose( $fp );
}

語法:

?
1
2
3
4
5
<?php
$url = "http://koonk.com/images/logo.png" ;
$rename = "koonk.png" ;
imagefromURL( $url , $rename );
?>

35. 檢測 URL 是否有效

?
1
2
3
4
5
6
7
8
function isvalidURL( $url )
{
$check = 0;
if (filter_var( $url , FILTER_VALIDATE_URL) !== false) {
   $check = 1;
}
return $check ;
}

語法:

?
1
2
3
4
5
<?php
$url = "http://koonk.com" ;
$check = checkvalidURL( $url );
echo $check ; //if returns 1 then URL is valid.
?>

36. 生成二維碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function qr_code( $data , $type = "TXT" , $size = '150' , $ec = 'L' , $margin = '0' )  
{
      $types = array ( "URL" =--> "http://" , "TEL" => "TEL:" , "TXT" => "" , "EMAIL" => "MAILTO:" );
     if (!in_array( $type , array ( "URL" , "TEL" , "TXT" , "EMAIL" )))
     {
         $type = "TXT" ;
     }
     if (!preg_match( '/^' . $types [ $type ]. '/' , $data ))
     {
         $data = str_replace ( "\\" , "" , $types [ $type ]). $data ;
     }
     $ch = curl_init();
     $data = urlencode( $data );
     curl_setopt( $ch , CURLOPT_URL, 'http://chart.apis.google.com/chart' );
     curl_setopt( $ch , CURLOPT_POST, true);
     curl_setopt( $ch , CURLOPT_POSTFIELDS, 'chs=' . $size . 'x' . $size . '&cht=qr&chld=' . $ec . '|' . $margin . '&chl=' . $data );
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true);
     curl_setopt( $ch , CURLOPT_HEADER, false);
     curl_setopt( $ch , CURLOPT_TIMEOUT, 30);
     $response = curl_exec( $ch );
     curl_close( $ch );
     return $response ;
}

語法:

?
1
2
3
4
<?php
header( "Content-type: image/png" );
echo qr_code( "http://koonk.com" , "URL" );
?>

37. 計算兩個地圖座標之間的距離

?
1
2
3
4
5
6
7
8
9
10
11
12
function getDistanceBetweenPointsNew( $latitude1 , $longitude1 , $latitude2 , $longitude2 ) {
     $theta = $longitude1 - $longitude2 ;
     $miles = (sin( deg2rad ( $latitude1 )) * sin( deg2rad ( $latitude2 ))) + ( cos ( deg2rad ( $latitude1 )) * cos ( deg2rad ( $latitude2 )) * cos ( deg2rad ( $theta )));
     $miles = acos ( $miles );
     $miles = rad2deg( $miles );
     $miles = $miles * 60 * 1.1515;
     $feet = $miles * 5280;
     $yards = $feet / 3;
     $kilometers = $miles * 1.609344;
     $meters = $kilometers * 1000;
     return compact( 'miles' , 'feet' , 'yards' , 'kilometers' , 'meters' );
}

語法:

?
1
2
3
4
5
6
7
8
<?php
$point1 = array ( 'lat' => 40.770623, 'long' => -73.964367);
$point2 = array ( 'lat' => 40.758224, 'long' => -73.917404);
$distance = getDistanceBetweenPointsNew( $point1 [ 'lat' ], $point1 [ 'long' ], $point2 [ 'lat' ], $point2 [ 'long' ]);
foreach ( $distance as $unit => $value ) {
     echo $unit . ': ' .number_format( $value ,4). '<br />' ;
}
?>

38. 獲取一個特定話題標籤的全部 Tweets

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getTweets( $hash_tag ) {
     $url = 'http://search.twitter.com/search.atom?q=' .urlencode( $hash_tag ) ;
     echo "<p>Connecting to <strong>$url</strong> ...</p>" ;
     $ch = curl_init( $url );
     curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, TRUE);
     $xml = curl_exec ( $ch );
     curl_close ( $ch );
     //If you want to see the response from Twitter, uncomment this next part out:
     //echo "<p>Response:</p>";
     //echo "<pre>".htmlspecialchars($xml)."</pre>";
     $affected = 0;
     $twelement = new SimpleXMLElement( $xml );
     foreach ( $twelement ->entry as $entry ) {
         $text = trim( $entry ->title);
         $author = trim( $entry ->author->name);
         $time = strtotime ( $entry ->published);
         $id = $entry ->id;
         echo "<p>Tweet from " . $author . ": <strong>" . $text . "</strong>  <em>Posted " . date ( 'n/j/y g:i a' , $time ). "</em></p>" ;
     }
     return true ;
}

39. 添加 th,st,nd 或者 rd 做爲數字的後綴

Friday the 13th

?
1
2
3
4
5
6
7
function ordinal( $cdnl ){
     $test_c = abs ( $cdnl ) % 10;
     $ext = (( abs ( $cdnl ) %100 < 21 && abs ( $cdnl ) %100 > 4) ? 'th'
             : (( $test_c < 4) ? ( $test_c < 3) ? ( $test_c < 2) ? ( $test_c < 1)
             ? 'th' : 'st' : 'nd' : 'rd' : 'th' ));
     return $cdnl . $ext ;
}

語法:

?
1
2
3
4
<?php
$number = 10;
echo ordinal( $number ); //output is 10th
?>

40. 限制文件下載的速度

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
// local file that should be send to the client
$local_file = 'test-file.zip' ;
// filename that the user gets as default
$download_file = 'your-download-name.zip' ;
  
// set the download rate limit (=> 20,5 kb/s)
$download_rate = 20.5;
if ( file_exists ( $local_file ) && is_file ( $local_file )) {
     // send headers
     header( 'Cache-control: private' );
     header( 'Content-Type: application/octet-stream' );
     header( 'Content-Length: ' . filesize ( $local_file ));
     header( 'Content-Disposition: filename=' . $download_file );
  
     // flush content
     flush ();    
     // open file stream
     $file = fopen ( $local_file , "r" );    
     while (! feof ( $file )) {
  
         // send the current file part to the browser
         print fread ( $file , round ( $download_rate * 1024));    
  
         // flush the content to the browser
         flush ();
  
         // sleep one second
         sleep(1);    
     }    
  
     // close file stream
     fclose( $file );}
else {
     die ( 'Error: The file ' . $local_file . ' does not exist!' );
}
?>

41. 把文本轉換成圖片

?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
header( "Content-type: image/png" );
$string = $_GET [ 'text' ];
$im = imagecreatefrompng( "images/button.png" );
$color = imagecolorallocate( $im , 255, 255, 255);
$px = (imagesx( $im ) - 7.5 * strlen ( $string )) / 2;
$py = 9;
$fontSize = 1;
imagestring( $im , fontSize, $px , $py , $string , $color );
imagepng( $im );
imagedestroy( $im );
?>

42. 獲取遠程文件的大小 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function remote_filesize( $url , $user = "" , $pw = "" )
{
     ob_start();
     $ch = curl_init( $url );
     curl_setopt( $ch , CURLOPT_HEADER, 1);
     curl_setopt( $ch , CURLOPT_NOBODY, 1);
     if (! empty ( $user ) && ! empty ( $pw ))
     {
         $headers = array ( 'Authorization: Basic ' base64_encode ( "$user:$pw" ));
         curl_setopt( $ch , CURLOPT_HTTPHEADER, $headers );
     }
     $ok = curl_exec( $ch );
     curl_close( $ch );
     $head = ob_get_contents();
     ob_end_clean();
     $regex = '/Content-Length:\s([0-9].+?)\s/' ;
     $count = preg_match( $regex , $head , $matches );
     return isset( $matches [1]) ? $matches [1] : "unknown" ;
}

語法:

?
1
2
3
4
5
<?php
$file = "http://koonk.com/images/logo.png" ;
$size = remote_filesize( $url );
echo $size ;
?>

43. 使用 imagebrick 進行 pdf 到圖像的轉換

?
1
2
3
4
5
6
7
8
9
10
<?php
$pdf_file   = './pdf/demo.pdf' ;
$save_to    = './jpg/demo.jpg' ;     //make sure that apache has permissions to write in this folder! (common problem)
//execute ImageMagick command 'convert' and convert PDF to JPG with applied settings
exec ( 'convert "' . $pdf_file . '" -colorspace RGB -resize 800 "' . $save_to . '"' , $output , $return_var );
if ( $return_var == 0) {              //if exec successfuly converted pdf to jpg
     print "Conversion OK" ;
}
else print "Conversion failed.<br />" . $output ;
?>

44. 使用 tinyurl 生成短網址

?
1
2
3
4
5
6
7
8
9
10
11
function get_tiny_url( $url )  
{  
     $ch = curl_init();  
     $timeout = 5;  
     curl_setopt( $ch ,CURLOPT_URL, 'http://tinyurl.com/api-create.php?url=' . $url );  
     curl_setopt( $ch ,CURLOPT_RETURNTRANSFER,1);  
     curl_setopt( $ch ,CURLOPT_CONNECTTIMEOUT, $timeout );  
     $data = curl_exec( $ch );  
     curl_close( $ch );  
     return $data ;  
}

語法:

?
1
2
3
4
5
<?php
$url = "http://blog.koonk.com/2015/07/Hello-World" ;
$tinyurl = get_tiny_url( $url );
echo $tinyurl ;
?>

45. youtube 下載連接生成器

使用下面的 PHP 片斷可讓你的用戶下載 Youtube 視頻

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function str_between( $string , $start , $end )
{
$string = " " . $string ; $ini = strpos ( $string , $start ); if ( $ini == 0) return "" ; $ini += strlen ( $start ); $len = strpos ( $string , $end , $ini ) - $ini ; return substr ( $string , $ini , $len ); }
function get_youtube_download_link(){
     $youtube_link = $_GET [ 'youtube' ];
     $youtube_page = file_get_contents ( $youtube_link );
     $v_id = str_between( $youtube_page , "&video_id=" , "&" );
     $t_id = str_between( $youtube_page , "&t=" , "&" );
     $flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id" ;
     $hq_flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=6" ;
     $mp4_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=18" ;
     $threegp_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=17" ;
     echo "\t\tDownload (right-click &gt; save as)&#58;\n\t\t" ;
     echo "<a href=\"$flv_link\">FLV</a>\n\t\t" ;
     echo "<a href=\"$hq_flv_link\">HQ FLV (if available)</a>\n\t\t" ;
     echo "<a href=\"$mp4_link\">MP4</a>\n\t\t" ;
     echo "<a href=\"$threegp_link\">3GP</a><br><br>\n" ;
}

46. Facebook 樣式的時間戳

Facebook (x mins age, y hours ago etc)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function nicetime( $date )
{
     if ( empty ( $date )) {
         return "No date provided" ;
     }
     
     $periods         = array ( "second" , "minute" , "hour" , "day" , "week" , "month" , "year" , "decade" );
     $lengths         = array ( "60" , "60" , "24" , "7" , "4.35" , "12" , "10" );
     
     $now             = time();
     $unix_date         = strtotime ( $date );
     
        // check validity of date
     if ( empty ( $unix_date )) {    
         return "Bad date" ;
     }
     // is it future date or past date
     if ( $now > $unix_date ) {    
         $difference     = $now - $unix_date ;
         $tense         = "ago" ;
         
     } else {
         $difference     = $unix_date - $now ;
         $tense         = "from now" ;
     }
     
     for ( $j = 0; $difference >= $lengths [ $j ] && $j < count ( $lengths )-1; $j ++) {
         $difference /= $lengths [ $j ];
     }
     
     $difference = round ( $difference );
     
     if ( $difference != 1) {
         $periods [ $j ].= "s" ;
     }
     
     return "$difference $periods[$j] {$tense}" ;
}

語法:

?
1
2
3
4
<?php
$date = "2015-07-05 03:45" ;
$result = nicetime( $date ); // 2 days ago
?>

via blog.koonk.com

相關文章
相關標籤/搜索