開發者必備 超實用的PHP代碼片斷

1、查看郵件是否已被閱讀

  當你在發送郵件時,你或許很想知道該郵件是否被對方已閱讀。這裏有段很是有趣的代碼片斷可以顯示對方IP地址記錄閱讀的實際日期和時間。php

<?
error_reporting (0);
Header( "Content-Type: image/jpeg" );
 
//Get IP
if (! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ]))
{
   $ip = $_SERVER [ 'HTTP_CLIENT_IP' ];
}
elseif (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]))
{
   $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];
}
else
{
   $ip = $_SERVER [ 'REMOTE_ADDR' ];
}
 
//Time
$actual_time = time();
$actual_day = date ( 'Y.m.d' , $actual_time );
$actual_day_chart = date ( 'd/m/y' , $actual_time );
$actual_hour = date ( 'H:i:s' , $actual_time );
 
//GET Browser
$browser = $_SERVER [ 'HTTP_USER_AGENT' ];
     
//LOG
$myFile = "log.txt" ;
$fh = fopen ( $myFile , 'a+' );
$stringData = $actual_day . ' ' . $actual_hour . ' ' . $ip . ' ' . $browser . ' ' . "\r\n" ;
fwrite( $fh , $stringData );
fclose( $fh );
 
//Generate Image (Es. dimesion is 1x1)
$newimage = ImageCreate(1,1);
$grigio = ImageColorAllocate( $newimage ,255,255,255);
ImageJPEG( $newimage );
ImageDestroy( $newimage );
     

?>html


2、從網友中提取關鍵字

一段偉大的代碼片斷可以輕鬆的從網頁中提取關鍵字。web

$meta = get_meta_tags( 'http://www.emoticode.net/' );
$keywords = $meta [ 'keywords' ];
// Split keywords
$keywords = explode ( ',' , $keywords );
// Trim them
$keywords = array_map ( 'trim' , $keywords );
// Remove empty values
$keywords = array_filter ( $keywords );
 

print_r( $keywords );api


3、查找頁面上的全部連接

使用DOM,你能夠輕鬆從任何頁面上抓取連接,代碼示例以下:數組

$html = file_get_contents ( 'http://www.example.com' );
 
$dom = new DOMDocument();
@ $dom ->loadHTML( $html );
 
// grab all the on the page
$xpath = new DOMXPath( $dom );
$hrefs = $xpath ->evaluate( "/html/body//a" );
 
for ( $i = 0; $i < $hrefs ->length; $i ++) {
        $href = $hrefs ->item( $i );
        $url = $href ->getAttribute( 'href' );
        echo $url . '<br />' ;

}瀏覽器


4、自動轉換URL,跳轉至超連接

在WordPress中,若是你想自動轉換URL,跳轉至超連接頁面,你能夠利用內置的函數make_clickable()執行此操做。若是你想基於WordPress以外操做該程序,那麼你能夠參考wp-includes/formatting.php源代碼。服務器

function _make_url_clickable_cb( $matches ) {
     $ret = '' ;
     $url = $matches [2];
  
     if ( empty ( $url ) )
         return $matches [0];
     // removed trailing [.,;:] from URL
     if ( in_array( substr ( $url , -1), array ( '.' , ',' , ';' , ':' )) === true ) {
         $ret = substr ( $url , -1);
         $url = substr ( $url , 0, strlen ( $url )-1);
     }
     return $matches [1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $ret ;
}
  
function _make_web_ftp_clickable_cb( $matches ) {
     $ret = '' ;
     $dest = $matches [2];
     $dest = 'http://' . $dest ;
  
     if ( empty ( $dest ) )
         return $matches [0];
     // removed trailing [,;:] from URL
     if ( in_array( substr ( $dest , -1), array ( '.' , ',' , ';' , ':' )) === true ) {
         $ret = substr ( $dest , -1);
         $dest = substr ( $dest , 0, strlen ( $dest )-1);
     }
     return $matches [1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret ;
}
  
function _make_email_clickable_cb( $matches ) {
     $email = $matches [2] . '@' . $matches [3];
     return $matches [1] . "<a href=\"mailto:$email\">$email</a>" ;
}
  
function make_clickable( $ret ) {
     $ret = ' ' . $ret ;
     // in testing, using arrays here was found to be faster
     $ret = preg_replace_callback( '#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is' , '_make_url_clickable_cb' , $ret );
     $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is' , '_make_web_ftp_clickable_cb' , $ret );
     $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i' , '_make_email_clickable_cb' , $ret );
  
     // this one is not in an array because we need it to run last, for cleanup of accidental links within links
     $ret = preg_replace( "#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i" , "$1$3</a>" , $ret );
     $ret = trim( $ret );
     return $ret ;

}dom


5、建立數據URL

 數據URL能夠直接嵌入到HTML/CSS/JS中,以節省大量的 HTTP請求。 下面的這段代碼可利用$file輕鬆建立數據URL。ide

function data_uri( $file , $mime ) {
   $contents = file_get_contents ( $file );
   $base64 = base64_encode ( $contents );
   echo "data:$mime;base64,$base64" ;
}


6、從服務器上下載&保存一個遠程圖片 

當你在搭建網站時,從遠程服務器下載某張圖片而且將其保存在本身的服務器上,這一操做會常常用到。代碼以下:函數

$image = file_get_contents ( 'http://www.url.com/image.jpg' );
file_put_contents ( '/images/image.jpg' , $image ); //Where to save the image

7、移除Remove Microsoft Word HTML Tag

 當你使用Microsoft Word會建立許多Tag,好比font,span,style,class等。這些標籤對於Word自己而言是很是有用的,可是當你從Word粘貼至網頁時,你會發現不少無用的Tag。所以,下面的這段代碼可幫助你刪除全部無用的Word HTML Tag。

function cleanHTML( $html ) {
/// <summary>
/// Removes all FONT and SPAN tags, and all Class and Style attributes.
/// Designed to get rid of non-standard Microsoft Word HTML tags.
/// </summary>
// start by completely removing all unwanted tags
 
$html = ereg_replace ( "<(/)?(font|span|del|ins)[^>]*>" , "" , $html );
 
// then run another pass over the html (twice), removing unwanted attributes
 
$html = ereg_replace ( "<([^>]*)(class|lang|style|size|face)=(" [^ "]*" | '[^' ]*'|[^>]+)([^>]*)> "," <\1>", $html );
$html = ereg_replace ( "<([^>]*)(class|lang|style|size|face)=(" [^ "]*" | '[^' ]*'|[^>]+)([^>]*)> "," <\1>", $html );
 
return $html

}


8、檢測瀏覽器語言

  若是你的網站上有多種語言,那麼能夠使用這段代碼做爲默認的語言來檢測瀏覽器語言。該段代碼將返回瀏覽器客戶端使用的初始語言。

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 ;

}


9、顯示Facebook 粉絲數量

 若是你的網站或者博客上有內鏈的Facebook頁面,你或許想知道擁有多少粉絲。這段代碼將幫助你查看Facebook粉絲數,記住,別忘了在你的頁面ID第二行添加該段代碼。

<?php
     $page_id = "YOUR PAGE-ID" ;
     $fans = $xml ->page->fan_count;

     echo $fans ;

10、對數據進行編碼轉換  


/**  

 * 對數據進行編碼轉換  

 * @param array/string $data       數組  

 * @param string $output    轉換後的編碼  

 */  

function array_iconv($data,  $output = 'utf-8') {  

    $encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');  

    $encoded = mb_detect_encoding($data, $encode_arr);  

  

    if (!is_array($data)) {  

        return mb_convert_encoding($data, $output, $encoded);  

    }  

    else {  

        foreach ($data as $key=>$val) {  

            $key = array_iconv($key, $output);  

            if(is_array($val)) {  

                $data[$key] = array_iconv($val, $output);  

            } else {  

            $data[$key] = mb_convert_encoding($data, $output, $encoded);  

            }  

        }  

    return $data;  

    }  

}  



?>

11、對數組JSON互相轉換 

 serialize unserialize

優點對數據值格式沒有要求,不會出現解析錯誤等問題

相關文章
相關標籤/搜索