开发者必备 超实用的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

优点对数据值格式没有要求,不会出现解析错误等问题

相关文章
相关标签/搜索