php常用函数库 - 开发知识库 - Wum

php常用函数库

  1. <?php  
  2. /** 
  3.  * 浏览器 
  4.  */  
  5. function browser( $url$obj = ''$http_referer = ''$cookie = '' ){  
  6.     if ( emptyempty($url) ) return false;  
  7.     if (function_exists('curl_init')){  
  8.         $ch = curl_init();  
  9.         //curl_setopt($ch, CURLOPT_ENCODING, '');  
  10.         curl_setopt($ch, CURLOPT_URL,$url);  
  11.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
  12.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);  
  13.         curl_setopt($ch, CURLOPT_TIMEOUT,600);  
  14.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,15);  
  15.         curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:18.0) Gecko/20100101 Firefox/18.0");  
  16.         if ( $obj == 'HEADER' ){  
  17.             curl_setopt($ch, CURLOPT_HEADER, 1);  
  18.             curl_setopt($ch, CURLOPT_NOBODY, 1);  
  19.         }else{  
  20.             curl_setopt($ch, CURLOPT_HEADER,0);  
  21.         }  
  22.         if ( ! emptyempty($http_referer) ){  
  23.             curl_setopt ($ch, CURLOPT_REFERER,$http_referer);  
  24.         }  
  25.         if ( $cookie == 'COOKIE' ){  
  26.             curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');  
  27.             curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');  
  28.         }  
  29.         $response = curl_exec($ch);  
  30.         $http_info = curl_getinfo($ch);  
  31.         curl_close($ch);  
  32.         if ($http_info['http_code'] == 404){  
  33.             return false;  
  34.         }  
  35.     }  
  36.   
  37.     if ( @!$response && $obj == '' ){  
  38.         ini_set('user_agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:17.0) Gecko/20100101 Firefox/17.0');  
  39.         $response = file_get_contents($url,false,stream_context_create(array('http' => array('method' => 'GET','timeout' => 10,'header' => "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:17.0) Gecko/20100101 Firefox/17.0rn"))));  
  40.     }  
  41.   
  42.     if ( $obj == 'OBJECT' )  
  43.         return array$response$http_info );  
  44.     elseif ( $obj == 'HEADER' )  
  45.         return $http_info;  
  46.     else  
  47.         return $response;  
  48. }  
  49.   
  50. /** 
  51.  * 写入文件 
  52.  */  
  53. function fileputcontent($filename,$resouce,$binary = false){  
  54.     ifemptyempty($filename) || emptyempty($resouce) ) return false;  
  55.     if$binary )  
  56.         $mode = 'wb';  
  57.     else  
  58.         $mode = 'w';  
  59.     $handle = fopen($filename,$mode);  
  60.     if$count = fwrite($handle,$resouce)){  
  61.         fclose($handle);  
  62.         return true;  
  63.     }  
  64.     fclose($handle);  
  65.     return false;  
  66. }  
  67. /** 
  68.  * 保存远程文件 
  69.  * $path = 'original' 存储时保持原路径 
  70.  * $link = 'original' 内容保持原链接 
  71.  */  
  72. function saveFile($url,$dir = 'files',$prefix='',$path = '',$link = '',$http_referer = '' , $arr = array()){  
  73.     ifemptyempty($url) ) return false;  
  74.     if ( !emptyempty($arr) && str_replace($arr,'',$url) != $url ){  
  75.         continue;  
  76.     }  
  77.     if (substr($url,0,4) != 'http')  
  78.         $url = $prefix.$url;  
  79.     if ( $path == 'original' && $link == 'original' ) {  
  80.         $localfile = $dir . strchrstr_replace('http://','',$url) ,'/' );  
  81.     }else{  
  82.         $ext = (strrchr($url,'?')!='') ? strrchrstr_replacestrrchr($url,'?') ,'',$url ) ,'.') : strrchr($url,'.');  
  83.         $localfile = $dir . '/' . substr(md5($url),8,16) . $ext;  
  84.     }  
  85.     if ( !is_dir( dirname( $localfile ) ) ) mkDirs( dirname($localfile) );  
  86.     if( !file_exists($localfile) || !filesize($localfile) ){  
  87.         for($i=0;$i<3;$i++){  
  88.             if$response = browser($url ,''$http_referer) ){  
  89.                 file_put_contents($localfile,$response );  
  90.                 break;  
  91.             }  
  92.         }  
  93.     }  
  94.     if$link == 'original' ){  
  95.         return $url;  
  96.     }else{  
  97.         return $localfile;  
  98.     }  
  99. }  
  100. /** 
  101.  * 保存远程图片 
  102.  * $path = 'original' 存储时保持原路径 
  103.  * $link = 'original' 内容保持原链接 
  104.  */  
  105. function saveBodyPic($body$dir = 'pic',$prefix='',$path = '',$link = '',$http_referer = ''$arr = array() ) {  
  106.     ifemptyempty($body) )  
  107.         return false;  
  108.   
  109.     if ( strpos$dir,'|' ) !== false ) {  
  110.         $dirarr = explode( '|', $dir );  
  111.         $dir = $dirarr[0];  
  112.     }  
  113.     preg_match_all('/<img[^<>]+src=['"]([^s"']+)['"][^<>]*>/iU',$body,$img1); 
  114.     preg_match_all('/src=["']*([^s"']+jpg|png|gif)[s"']/iU',$body,$img2);  
  115.     preg_match_all('/<!--[thumb[([^>]*)]]-->/iU', $body$img3);  
  116.     preg_match_all('/<!--[middle[([^>]*)]]-->/iU', $body$img4);  
  117.     $img = array_uniquearray_merge ($img1[1],$img2[1],$img3[1],$img4[1] ) );  
  118.   
  119.     if( ! emptyempty$img ) && mkDirs( $dir ) ) {  
  120.   
  121.         $cannotfile = array('*',':','<','>','"','|','?','&');  
  122.         foreach ( $img as $item ){ 
  123.             if( str_replace($cannotfile,'',$item) != $item ){ 
  124.                 continue; 
  125.             } 
  126.             if ( !empty($arr) && str_replace($arr,'',$item) != $item ){ 
  127.                 continue; 
  128.             } 
  129.             $bodyimgsrc = (substr($item,0,4) != 'http') ? $prefix.$item : $item; 
  130.             if (strrchr($bodyimgsrc,'?') != '') { 
  131.                 $bodyimgsrc = str_replace( strrchr($bodyimgsrc,'?') ,'',$bodyimgsrc ); 
  132.             } 
  133.             if( str_replace('google','',$bodyimgsrc) != $bodyimgsrc ){ 
  134.                 continue; 
  135.             } 
  136.  
  137.             $srcpath = strchr( substr($bodyimgsrc,7),'/' ); 
  138.             if ( ! ( $ext = strrchr(basename($srcpath),'.') ) ){ 
  139.                 $ext = '.jpg'; 
  140.             } 
  141.             if( ($path == 'original') && ($link == 'original') ){ 
  142.                 $localfile = $dir . str_ireplace($ext,'', $srcpath ) . $ext; 
  143.                 $imgurl = $bodyimgsrc; 
  144.             }else{ 
  145.                 $localfile = $dir . '/' . substr(md5($bodyimgsrc),8,16) . $ext; 
  146.                 $imgurl = empty ( $dirarr[1] ) ? str_replace('','/',$localfile) : str_replace($dirarr[1].'/','', $localfile ); 
  147.             } 
  148.  
  149. file_put_contents($dir.'/imgsavelogs.txt',$localfile.'|'.$bodyimgsrc."rn",FILE_APPEND); 
  150.  
  151.             if( !file_exists($localfile) || !filesize($localfile) ){ 
  152.                 mkDirs( dirname($localfile) ); 
  153.                 for($i=0;$i<3;$i++){ 
  154.                     $filedata = browser($bodyimgsrc,'OBJECT',$http_referer); 
  155.                     $fileinfo = browser($bodyimgsrc,'HEADER',$http_referer); 
  156.                     if ( $filedata[1]['download_content_length'] == $fileinfo['download_content_length'] ){ 
  157.                         file_put_contents( $gbkname = mb_convert_encoding($localfile,'GBK','UTF-8'),$filedata[0] ); 
  158.                         break; 
  159.                     }else{ 
  160.                         // print_r ($filedata[1]);print_r($fileinfo); 
  161.                     } 
  162.                 } 
  163.             } 
  164. /*  
  165.             if( !file_exists($localfile) || !filesize($localfile) ){ 
  166.                 mkDirs( dirname($localfile) ); 
  167.                 for($i=0;$i<3;$i++){ 
  168.                     if($filedata = browser($bodyimgsrc,'',$http_referer) ){ 
  169.                         file_put_contents(mb_convert_encoding($localfile,'GBK','UTF-8'),$filedata ); 
  170.                         break; 
  171.                     } 
  172.                 } 
  173.             } 
  174.  */ 
  175.             $body = str_replace($item , $imgurl , $body ); 
  176.             $body = preg_replace('/<img[^>]+'.addcslashes($item,'/.').'[^>]+>/iU' , '<img src="'.$imgurl.'">' , $body ); 
  177.  
  178.         } 
  179.     } 
  180.     return $body; 
  181. } 
  182. /* 
  183.  * URL添加img标签 
  184. */ 
  185. function addImg ($content) { 
  186.     preg_match_all('/(http:.+(?:jpg|png|gif|bmp))[s<]/iU',$content,$matches); 
  187.     foreach( $matches[1] as $item ){ 
  188.         $content = str_replace($item,'<img src="'.trim($item).'">',$content); 
  189.     } 
  190.     return $content; 
  191. } 
  192. /* 
  193.  * 递归删除目录 
  194. */ 
  195. function delDir($dir){ 
  196.     $dh = opendir($path); 
  197.     while(($d = readdir($dh)) !== false){ 
  198.         if($d == '.' || $d == '..'){ 
  199.             continue; 
  200.         } 
  201.             $tmp = $dir.'/'.$d; 
  202.         if(!is_dir($tmp)){ 
  203.             unlink($tmp); 
  204.         }else{ 
  205.             deldir($tmp); 
  206.         } 
  207.     } 
  208.     closedir($dh); 
  209.     rmdir($dir); 
  210. } 
  211. function deleteAll($directory, $empty = false) { 
  212.     if(substr($directory,-1) == "/") { 
  213.         $directory = substr($directory,0,-1); 
  214.     } 
  215.     if(!file_exists($directory) || !is_dir($directory)) { 
  216.         return false; 
  217.     }elseif(!is_readable($directory)) { 
  218.         return false; 
  219.     }else{ 
  220.         $directoryHandle = opendir($directory); 
  221.         while ($contents = readdir($directoryHandle)) { 
  222.             if($contents != '.' && $contents != '..') { 
  223.                 $path = $directory . "/" . $contents; 
  224.                 if(is_dir($path)) { 
  225.                     deleteAll($path); 
  226.                 } else { 
  227.                     unlink($path); 
  228.                 } 
  229.             } 
  230.         } 
  231.         closedir($directoryHandle); 
  232.         if($empty == false) { 
  233.             if(!rmdir($directory)) { 
  234.                 return false; 
  235.             } 
  236.         } 
  237.         return true; 
  238.     } 
  239. } 
  240. /** 
  241.  * 递归创建级联目录 
  242.  */ 
  243. function mkDirs($dir){ 
  244.     if( empty($dir) )  
  245.         return false; 
  246.     if( is_dir($dir) || @mkdir($dir) )  
  247.         return true; 
  248.     if( ! mkDirs( dirname($dir) ) )  
  249.         return false; 
  250.     return mkdir($dir); 
  251. } 
  252.  
  253. /*  
  254.  * 迭代创建级联目录 
  255.  */ 
  256. function makedirs($path){ 
  257.     $arr=array(); 
  258.     while(!is_dir($path)){ 
  259.         array_push($arr,$path); 
  260.         $path=dirname($path); 
  261.     } 
  262.     while( ! empty($arr) && count($arr) ){ 
  263.         $parentdir=array_pop($arr); 
  264.         mkdir($parentdir); 
  265.     } 
  266.     if ( is_dir($path) ) 
  267.         return true; 
  268.     else 
  269.         return false; 
  270. } 
  271. /* 
  272.  * 过滤URL参数 
  273.  */ 
  274. function filterParam($url, $paramArg = array() ) { 
  275.     if (empty($paramArg)){ 
  276.         $part = parse_url($url); 
  277.         return (empty($part['scheme'])?'':$part['scheme'].'://') 
  278.             . (empty($part['host'])?'':$part['host']) 
  279.             . (empty($part['port'])?'':':' . $part['port']) 
  280.             . (empty($part['path'])?'':$part['path']) ; 
  281.     } 
  282.     $parts = parse_url($url); 
  283.     if(!isset($parts['query'])) {return false;} 
  284.     parse_str($parts['query'], $output);     
  285.     return array_intersect_key($output,$paramArg); 
  286. } 
  287. /** 
  288.  * 搜索数组 
  289.  */ 
  290. function searchInArray($str,$arr){ 
  291.     if( empty($str) || empty($arr) ) return false; 
  292.     if($key = array_search($str,$arr) ) return $key; 
  293.     foreach( $arr as $item ){ 
  294.         if( stripos($item,$str) !== false ) return array_search($item,$arr); 
  295.     } 
  296. } 
  297. /** 
  298.  * 判断数组是否空 
  299.  */ 
  300. function is_multiArrayEmpty($multiarray) { 
  301.     if(is_array($multiarray) and !empty($multiarray)){ 
  302.         $tmp = array_shift($multiarray); 
  303.             if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){ 
  304.                 return false; 
  305.             } 
  306.             return true; 
  307.     } 
  308.     if(empty($multiarray)){ 
  309.         return true; 
  310.     } 
  311.     return false; 
  312. } 
  313. /** 
  314.  * 获取扩展名 
  315.  */ 
  316. function get_extension($link){ 
  317.     $ext = pathinfo($link, PATHINFO_EXTENSION); 
  318.     $ext = str_replace( strchr($ext,'?') ,'',$ext ); 
  319.     return $ext; 
  320. } 
  321. /** 
  322.  * 获取目录名 
  323.  */ 
  324. function get_dirname($file){ 
  325.     if ( substr($file,-1) == '/') 
  326.         return substr($file,0,-1); 
  327.     else 
  328.         return dirname($file); 
  329. } 
  330. /** 
  331.  * 
  332.  */ 
  333. function make2local($url,$domain = ''){ 
  334.     if( '/' == substr($url,-1) ){ 
  335.         $filename = str_replace($domain,'',$url) . 'index.html'; 
  336.     }else{ 
  337.         $newurl = ( ! get_extension($url) ) ? $url.'.html' : $url ; 
  338.         $filename = str_replace($domain,'',$newurl); 
  339.     } 
  340.     $filename = str_replace('.php','.html',$filename); 
  341.     return $filename; 
  342. } 
  343. /** 
  344.  * 将一个URL转换为完整URL 
  345.  * get_absolute_url('a.com/b/c/../d/e.php') 
  346.  */ 
  347. function get_absolute_url ( $url ) { 
  348.     $url = preg_replace('/[^/.]+/..//iU','',$url); 
  349.     if ( str_replace('/../','', $url ) != $url ) 
  350.         $url = get_absolute_url ($url); 
  351.     return str_replace('/.','',$url); 
  352. } 
  353. /** 
  354.  * 将当前相对URL转换为完整URL 
  355.  * get_format_url('./c/d.php','http://w.a.com/a/b'); 
  356.  */ 
  357. function get_format_url($srcurl, $baseurl = '') { 
  358.     $srcinfo = parse_url($srcurl); 
  359.  
  360.     if (isset($srcinfo['scheme'])) { 
  361.         $fullurl = get_absolute_url($srcurl); 
  362.     } else { 
  363.         $baseinfo = parse_url($baseurl); 
  364.         if( ! isset($baseinfo['scheme']) ) { 
  365.             $fullurl = false; 
  366.         } 
  367.         $port = isset($baseinfo['port']) ? ':' . $baseinfo['port'] : '';  
  368.         $url = $baseinfo['scheme'].'://'.$baseinfo['host'] . $port; 
  369.         if(substr(@$srcinfo['path'], 0, 1) == '/') { 
  370.             $path = $srcinfo['path']; 
  371.         }else{ 
  372.             $path = dirname(@$baseinfo['path']).'/'.@$srcinfo['path']; 
  373.         } 
  374.         $rst = array(); 
  375.         $path_array = explode('/', $path); 
  376.         if(!$path_array[0]) { 
  377.             $rst[] = ''; 
  378.         } 
  379.         foreach ($path_array AS $key => $dir) { 
  380.             if ($dir == '..') { 
  381.                 if (end($rst) == '..') { 
  382.                     $rst[] = '..'; 
  383.                 }elseif(!array_pop($rst)) { 
  384.                     $rst[] = '..'; 
  385.                 } 
  386.             }elseif($dir && $dir != '.') { 
  387.                 $rst[] = $dir; 
  388.             } 
  389.         } 
  390.         if(!end($path_array)) { 
  391.             $rst[] = ''; 
  392.         } 
  393.         $path = implode('/',$rst); 
  394.         $url .= substr($path,0,1) == '/' ? $path : '/'.$path; 
  395.         $fullurl = str_replace('', '/', $url); 
  396.     } 
  397.     return $fullurl; 
  398. } 
  399. /** 
  400.  * 字符截取方式获得内容 
  401.  */ 
  402. function subContent( $response,$before,$after ) { 
  403.     if( $length = intval( stripos( $response , $after ) ) ){ 
  404.         $start = strpos( $response, $before ); 
  405.         $length = $length - $start; 
  406.         $content = substr( $response  ,$start , $length ); 
  407.     } 
  408.     return $content; 
  409. } 
  410. /** 
  411.  *  文档自动分页 
  412.  * @param     string  $mybody  内容 
  413.  * @param     string  $spsize  分页大小 
  414.  * @param     string  $sptag  分页标记 
  415.  * @exmple    $body = SpLongBody($body,$spsize*512,"#p#分页标题#e#"); 
  416.  */ 
  417. function SpLongBody($mybody, $spsize, $sptag) 
  418. { 
  419.     if(strlen($mybody) < $spsize) 
  420.     { 
  421.         return $mybody; 
  422.     } 
  423.     $mybody = stripslashes($mybody); 
  424.     $bds = explode('<', $mybody); 
  425.     $npageBody = ''; 
  426.     $istable = 0; 
  427.     $mybody = ''; 
  428.     foreach($bds as $i=>$k) 
  429.     { 
  430.         if($i==0) 
  431.         { 
  432.             $npageBody .= $bds[$i]; continue; 
  433.         } 
  434.         $bds[$i] = "<".$bds[$i]; 
  435.         if(strlen($bds[$i])>6) 
  436.         { 
  437.             $tname = substr($bds[$i],1,5); 
  438.             if(strtolower($tname)=='table') 
  439.             { 
  440.                 $istable++; 
  441.             } 
  442.             else if(strtolower($tname)=='/tabl') 
  443.             { 
  444.                 $istable--; 
  445.             } 
  446.             if($istable>0) 
  447.             { 
  448.                 $npageBody .= $bds[$i]; continue; 
  449.             } 
  450.             else 
  451.             { 
  452.                 $npageBody .= $bds[$i]; 
  453.             } 
  454.         } 
  455.         else 
  456.         { 
  457.             $npageBody .= $bds[$i]; 
  458.         } 
  459.         if(strlen($npageBody)>$spsize) 
  460.         { 
  461.             $mybody .= $npageBody.$sptag; 
  462.             $npageBody = ''; 
  463.         } 
  464.     } 
  465.     if($npageBody!='') 
  466.     { 
  467.         $mybody .= $npageBody; 
  468.     } 
  469.     return $mybody; 
  470. } 
  471. /* gbk sub */ 
  472. function gbksubstr($str, $start, $len) { 
  473.     $tmpstr = ""; 
  474.     $strlen = $start + $len; 
  475.     for($i = 0; $i < $strlen; $i++) { 
  476.         if(ord(substr($str, $i, 1)) > 0xa0) { 
  477.             $tmpstr .= substr($str, $i, 2); 
  478.             $i++; 
  479.         } else 
  480.             $tmpstr .= substr($str, $i, 1); 
  481.     } 
  482.     return $tmpstr; 
  483. } 
  484. /* utf-8 substr */ 
  485. function utf8_substr($str,$from,$len){ 
  486.     preg_match_all('#(?:[x00-x7F]|[xC0-xFF][x80-xBF]+)#s',$str,$array, PREG_PATTERN_ORDER); 
  487.     $from1=0;$len1=0; 
  488.     foreach($array[0] as $key => $val){ 
  489.         $n = ord($val)>=128 ? 2:1; 
  490.         $from1 += $n; 
  491.         if($from1>$from){ 
  492.             $len1 += $n; 
  493.             if($len1<=$len){ 
  494.                 $s.=$val; 
  495.             }else{ 
  496.                 return $s; 
  497.             } 
  498.         } 
  499.     } 
  500.     return $s; 
  501. } 
  502. /* output utf-8 */ 
  503. function output_utf8($body){ 
  504.     if( is_utf8( $body ) ){ 
  505.         return $body; 
  506.     }else{ 
  507.         return mb_convert_encoding( $body,'UTF-8','GBK' ); 
  508.     } 
  509. } 
  510. /* decode utf8 subject */ 
  511. function fix_text($str){ 
  512.     $subject = ''; 
  513.     $subject_array = imap_mime_header_decode($str); 
  514.     foreach ($subject_array AS $obj) 
  515.         $subject .= rtrim($obj->text, " "); 
  516.     return $subject; 
  517. } 
  518. /* utf-8 detect */ 
  519. function is_utf8($word){ 
  520.     if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true 
  521.     || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true 
  522.     || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){ 
  523.         return true; 
  524.     }else{ 
  525.         return false; 
  526.     } 
  527. } 
  528. /* 计算中文字符串长度 */ 
  529. function utf8_strlen($string = null) { 
  530.     preg_match_all('/./us', $string, $match); 
  531.     return count($match[0]); 
  532. } 
  533. /** 
  534.  * get the body of the message 
  535.  * 
  536.  * @param string $msgCount 
  537.  * @return string 
  538.  */ 
  539. function getBody($mbox,$msgCount) { 
  540.     $body = getPart($mbox,$msgCount, "TEXT/HTML"); 
  541.     if ($body == '') { 
  542.         $body = getPart($mbox,$msgCount, "TEXT/PLAIN"); 
  543.     } 
  544.     if ($body == '') { 
  545.         return ''; 
  546.     } 
  547.     return $body; 
  548. } 
  549. /** 
  550.  * Read the structure of a particular message and fetch a particular 
  551.  * section of the body of the message 
  552.  * 
  553.  * @param string $msgCount 
  554.  * @param string $mimeType 
  555.  * @param object $structure 
  556.  * @param string $partNumber 
  557.  * @return string|bool 
  558.  */ 
  559. function getPart($mbox,$msgCount, $mimeType, $structure = false, $partNumber = false) { 
  560.     if(!$structure) { 
  561.         $structure = imap_fetchstructure($mbox, $msgCount); 
  562.     } 
  563.     if($structure) { 
  564.         if($mimeType == getMimeType($structure)) { 
  565.             if(!$partNumber) { 
  566.                 $partNumber = "1"; 
  567.             } 
  568.             $fromEncoding = $structure->parameters[0]->value; 
  569.             $text = imap_fetchbody($mbox, $msgCount, $partNumber); 
  570.             if($structure->encoding == 3) { 
  571.                 $text = imap_base64($text); 
  572.             } else if($structure->encoding == 4) { 
  573.                 $text = imap_qprint($text); 
  574.             } 
  575.             //$text = mb_convert_encoding($text,'utf-8',$fromEncoding); 
  576.             return $text; 
  577.         } 
  578.         if($structure->type == 1) { 
  579.             while(list($index, $subStructure) = each($structure->parts)) { 
  580.                 if($partNumber) { 
  581.                     $prefix = $partNumber . '.'; 
  582.                 } 
  583.                 $data = getPart($mbox,$msgCount, $mimeType, $subStructure, @$prefix . ($index + 1)); 
  584.                 if($data){ 
  585.                     return $data; 
  586.                 } 
  587.             } 
  588.         } 
  589.     } 
  590.     return false; 
  591. } 
  592. /** 
  593.  * get the subtype and type of the message structure 
  594.  * 
  595.  * @param object $structure 
  596.  */ 
  597. function getMimeType($structure) { 
  598.     $mimeType = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER"); 
  599.     if($structure->subtype) { 
  600.         return $mimeType[(int) $structure->type] . '/' . $structure->subtype; 
  601.     } 
  602.     return "TEXT/PLAIN"; 
  603. } 
  604.  
  605. /* 
  606.  * 将文字生成PNG图片 
  607.  * 中文宋体,英文arial 
  608.  * @size 文字大小,@angle 文字角度,@x x坐标,@y y坐标,@width 图片宽度,@height 图片高度 
  609. */ 
  610. function textToImage ( $str , $size , $angle , $x , $y , $width = 400 ,$height = 400, $font = 'zh', $output = true) { 
  611.  
  612.     //要输出的字 
  613.     $zh_font = 'C:/Windows/Fonts/simsun.ttc'; 
  614.     $en_font = 'C:/Windows/Fonts/arial.ttf'; 
  615.     $lang = ($font == 'en') ? $en_font : $zh_font; 
  616.     // 创建一个真彩的图片背景,参数是  width 图像宽度, height 图像高度 
  617.     $im = imagecreatetruecolor($width, $height); 
  618.     //或者可以调用已有的PNG图片等 : $im = imagecreatefrompng('background.png'); 
  619.  
  620.     // 定义几个色彩 
  621.     $white = imagecolorallocate($im, 255, 255, 255); 
  622.     $grey = imagecolorallocate($im, 128, 128, 128); 
  623.     $black = imagecolorallocate($im, 0, 0, 0); 
  624.      
  625.     //填充背景为白色 
  626.     imagefill($im, 0, 0, $white); 
  627.      
  628.     //将背景透明化 
  629.     imagecolortransparent($im,$white); 
  630.      
  631.     //以上两行是创建透明图片的关键! 
  632.     //很多人反应, imagecreatetruecolor创建后的图片,背景颜色是黑的,无论怎么修改都不能变成白色的 
  633.     //我先将背景填充为白色,再做透明处理就可以了!在Firefox3和IE7下测试成功! 
  634.     // 这是一个很简单的产生阴影的效果。 
  635.     //先在原本要输出的位置的偏左下角一点点输出灰色的字体,接着再用黑色字体写上去就有阴影效果了 
  636.     //imagettftext($im, 20, 0, 11, 21, $grey, $en_font, $en_text); 
  637.      
  638.     // 写入字体 
  639.     imagettftext($im, $size, $angle, $x, $y, $black, $lang, $str); 
  640.  
  641.     if ( $output ) { 
  642.         ob_start(); 
  643.         imagepng($im); 
  644.         $image_data = ob_get_contents(); 
  645.         ob_end_clean(); 
  646.         $file_content=chunk_split( base64_encode($image_data) );//base64编码 
  647.         $img='data:image/png;base64,'.$file_content;//合成图片的base64编码 
  648.     } else { 
  649.         header("Content-type: image/png"); 
  650.         header("Cache-Control: no-cache");  
  651.         imagepng($im);  
  652.     }  
  653.     imagedestroy($im);  
  654.   
  655.     // 不用说了,输出图片,然后清除缓存  
  656.   
  657.     return $img;  
  658. }  
标签: 
发布日期: