首页 > 代码库 > 超实用的php代码片段

超实用的php代码片段

超级有用的PHP代码片段。当你在开发网站、应用或者博客时,利用这些代码能为你节省大量的时间。
一、查看邮件是否已被阅读 
当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。
[php] view plain copy
 
 print?技术分享技术分享
  1. <?   
  2. error_reporting(0);   
  3.  Header("Content-Type: image/jpeg");   
  4.     
  5.  //Get IP if (!empty($_SERVER[‘HTTP_CLIENT_IP‘]))   
  6.  {   
  7.   $ip=$_SERVER[‘HTTP_CLIENT_IP‘];   
  8.  }   
  9. elseif (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR‘]))   
  10.  {   
  11.   $ip=$_SERVER[‘HTTP_X_FORWARDED_FOR‘];   
  12.  }   
  13.  else  
  14.  {   
  15.   $ip=$_SERVER[‘REMOTE_ADDR‘];   
  16.  }   
  17.     
  18.  //Time $actual_time = time();   
  19. $actual_day = date(‘Y.m.d‘, $actual_time);   
  20. $actual_day_chart = date(‘d/m/y‘, $actual_time);   
  21. $actual_hour = date(‘H:i:s‘, $actual_time);   
  22.     
  23.  //GET Browser $browser = $_SERVER[‘HTTP_USER_AGENT‘];   
  24.         
  25.  //LOG $myFile = "log.txt";   
  26. $fh = fopen($myFile, ‘a+‘);   
  27. $stringData = $actual_day . ‘ ‘ . $actual_hour . ‘ ‘ . $ip . ‘ ‘ . $browser . ‘ ‘ . "\r\n";   
  28. fwrite($fh, $stringData);   
  29. fclose($fh);   
  30.     
  31.  //Generate Image (Es. dimesion is 1x1) $newimage = ImageCreate(1,1);   
  32. $grigio = ImageColorAllocate($newimage,255,255,255);   
  33.  ImageJPEG($newimage);   
  34.  ImageDestroy($newimage);   
  35.         
  36.  ?>  


复制代码
二、从网页中提取关键字 
一段伟大的代码片段能够轻松的从网页中提取关键字。
[php] view plain copy
 
 print?技术分享技术分享
  1. $meta = get_meta_tags(‘http://www.emoticode.net/‘);   
  2. $keywords = $meta[‘keywords‘];   
  3.  // Split keywords $keywords = explode(‘,‘, $keywords );   
  4.  // Trim them $keywords = array_map( ‘trim‘, $keywords );   
  5.  // Remove empty values $keywords = array_filter( $keywords );   
  6.     
  7. print_r( $keywords );  


复制代码
三、查找页面上的所有链接 
使用DOM,你可以轻松从任何页面上抓取链接,代码示例如下:
[php] view plain copy
 
 print?技术分享技术分享
  1. $html = file_get_contents(‘http://www.example.com‘);   
  2.     
  3. $dom = new DOMDocument();   
  4.  @$dom->loadHTML($html);   
  5.     
  6.  // grab all the on the page $xpath = new DOMXPath($dom);   
  7. $hrefs = $xpath->evaluate("/html/body//a");   
  8.     
  9.  for ($i = 0; $i < $hrefs->length; $i++) {   
  10.        $href = $hrefs->item($i);   
  11.        $url = $href->getAttribute(‘href‘);   
  12.        echo $url.‘<br />‘;   
  13.  }  


复制代码
四、自动转换URL,跳转至超链接 
在WordPress中,如果你想自动转换URL,跳转至超链接页面,你可以利用内置的函数make_clickable()执行此操作。如果你想基于WordPress之外操作该程序,那么你可以参考wp-includes/formatting.php源代码。
[php] view plain copy
 
 print?技术分享技术分享
  1. function _make_url_clickable_cb($matches) {   
  2.     $ret = ‘‘;   
  3.     $url = $matches[2];   
  4.      
  5.     if ( empty($url) )   
  6.         return $matches[0];   
  7.     // removed trailing [.,;:] from URL     if ( in_array(substr($url, -1), array(‘.‘, ‘,‘, ‘;‘, ‘:‘)) === true ) {   
  8.         $ret = substr($url, -1);   
  9.         $url = substr($url, 0, strlen($url)-1);   
  10.     }   
  11.     return $matches[1] . "<a href=http://www.mamicode.com/"$url\" rel=\"nofollow\">$url</a>" . $ret;   
  12.  }   
  13.      
  14.  function _make_web_ftp_clickable_cb($matches) {   
  15.     $ret = ‘‘;   
  16.     $dest = $matches[2];   
  17.     $dest = ‘http://‘ . $dest;   
  18.      
  19.     if ( empty($dest) )   
  20.         return $matches[0];   
  21.     // removed trailing [,;:] from URL     if ( in_array(substr($dest, -1), array(‘.‘, ‘,‘, ‘;‘, ‘:‘)) === true ) {   
  22.         $ret = substr($dest, -1);   
  23.         $dest = substr($dest, 0, strlen($dest)-1);   
  24.     }   
  25.     return $matches[1] . "<a href=http://www.mamicode.com/"$dest\" rel=\"nofollow\">$dest</a>" . $ret;   
  26.  }   
  27.      
  28.  function _make_email_clickable_cb($matches) {   
  29.     $email = $matches[2] . ‘@‘ . $matches[3];   
  30.     return $matches[1] . "<a href=http://www.mamicode.com/"mailto:$email\">$email</a>";   
  31.  }   
  32.      
  33.  function make_clickable($ret) {   
  34.     $ret = ‘ ‘ . $ret;   
  35.     // 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);   
  36.     $ret = preg_replace_callback(‘#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@
     
    +]*)#is‘, ‘_make_web_ftp_clickable_cb‘, $ret);   
  37.     $ret = preg_replace_callback(‘#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i‘, ‘_make_email_clickable_cb‘, $ret);   
  38.      
  39.     // 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);   
  40.     $ret = trim($ret);   
  41.     return $ret;   
  42.  }  


复制代码
五、创建数据URL 
数据URL可以直接嵌入到HTML/CSS/JS中,以节省大量的 HTTP请求。 下面的这段代码可利用$file轻松创建数据URL。
[php] view plain copy
 
 print?技术分享技术分享
  1. function data_uri($file, $mime) {   
  2.   $contents=file_get_contents($file);   
  3.   $base64=base64_encode($contents);   
  4.   echo "data:$mime;base64,$base64";   
  5.  }  


复制代码
六、从服务器上下载&保存一个远程图片
[php] view plain copy
 
 print?技术分享技术分享
  1. $image = file_get_contents(‘http://www.url.com/image.jpg‘);   
  2. file_put_contents(‘/images/image.jpg‘, $image);   


复制代码
七、移除Remove Microsoft Word HTML Tag 
当你使用Microsoft Word会创建许多Tag,比如font,span,style,class等。这些标签对于Word本身而言是非常有用的,但是当你从Word粘贴至网页时,你会发现很多无用的Tag。因此,下面的这段代码可帮助你删除所有无用的Word HTML Tag。
[php] view plain copy
 
 print?技术分享技术分享
  1. function cleanHTML($html) {   
  2.  /// <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     
  3. $html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$html);   
  4.     
  5.  // then run another pass over the html (twice), removing unwanted attributes     
  6. $html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|‘[^‘]*‘|[^>]+)([^>]*)>","<\1>",$html);   
  7. $html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|‘[^‘]*‘|[^>]+)([^>]*)>","<\1>",$html);   
  8.     
  9. return $html   
  10. }  


复制代码
八、检测浏览器语言 
如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。
[php] view plain copy
 
 print?技术分享技术分享
  1. function get_client_language($availableLanguages, $default=‘en‘){   
  2.     if (isset($_SERVER[‘HTTP_ACCEPT_LANGUAGE‘])) {   
  3.         $langs=explode(‘,‘,$_SERVER[‘HTTP_ACCEPT_LANGUAGE‘]);   
  4.     
  5.         foreach ($langs as $value){   
  6.             $choice=substr($value,0,2);   
  7.             if(in_array($choice, $availableLanguages)){   
  8.                 return $choice;   
  9.             }   
  10.         }   
  11.     }    
  12.     return $default;   
  13.  }  

九、判断是否微信访问,是否手机访问

/*-*-
 * 判断是否手机访问
 */
function is_mobile(){
    if(preg_match(‘/(iphone|ipad|ipod|android)/i‘, strtolower($_SERVER[‘HTTP_USER_AGENT‘]))){
        return true;
    }else{
        return false;
    }
}
/*-*-
 * 判断是否微信访问
 */
function is_weixin(){
    if(strpos($_SERVER[‘HTTP_USER_AGENT‘],‘MicroMessenger‘) !== false){
        return true;
    }else{
        return false;
    }
}

 

超实用的php代码片段