开发者必备 超实用的PHP代码片段

一、查看邮件是否已被阅读

  当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。

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

?>


二、从网友中提取关键字

一段伟大的代码片段能够轻松的从网页中提取关键字。

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


三、查找页面上的所有链接

使用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 />' ;

}


四、自动转换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 ;

}


五、创建数据URL

 数据URL可以直接嵌入到HTML/CSS/JS中,以节省大量的 HTTP请求。 下面的这段代码可利用$file轻松创建数据URL。

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


六、从服务器上下载&保存一个远程图片 

当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到。代码如下:

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

七、移除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

}


八、检测浏览器语言

  如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。

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 ;

}


九、显示Facebook 粉丝数量

 如果你的网站或者博客上有内链的Facebook页面,你或许想知道拥有多少粉丝。这段代码将帮助你查看Facebook粉丝数,记住,别忘了在你的页面ID第二行添加该段代码。

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

     echo $fans ;

十、对数据进行编码转换  


/**  

 * 对数据进行编码转换  

 * @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;  

    }  

}  



?>

十一、对数组JSON互相转换 

 serialize unserialize

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



转载于:https://my.oschina.net/u/1420250/blog/262929

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值