1.月份显示/** 月份顯示* @param int $m 1-12* @param int $type 0:long 1:short(default) 2:chinese* @return string*/function format_month($m, $type=0){ $month = array( array('', 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'), array('', 'jan', 'feb', 'mar', 'apr', 'may', 'june', 'july', 'aug', 'sept', 'oct', 'nov', 'dec'), array('', '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月') ); return $month[$type][$m];}
2.过滤字符串,保留utf8字母数字中文及部分符号/** 過濾字符串,保留utf8字母數字中文及部份符號* @param string $ostr* @return string*/function filter_utf8_char($ostr){ preg_match_all('/[\x{ff00}-\x{ffef}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches); $str = join('', $matches[0]); if($str==''){ //含有特殊字符需要逐個處理 $returnstr = ''; $i = 0; $str_length = strlen($ostr); while ($i<=$str_length){ $temp_str = substr($ostr, $i, 1); $ascnum = ord($temp_str); if ($ascnum>=224){ $returnstr = $returnstr.substr($ostr, $i, 3); $i = $i + 3; }elseif ($ascnum>=192){ $returnstr = $returnstr.substr($ostr, $i, 2); $i = $i + 2; }elseif ($ascnum>=65 && $ascnum<=90){ $returnstr = $returnstr.substr($ostr, $i, 1); $i = $i + 1; }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符 $i = $i + 1; }else{ $returnstr = $returnstr.substr($ostr, $i, 1); $i = $i + 1; } } $str = $returnstr; preg_match_all('/[\x{ff00}-\x{ffef}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches); $str = join('', $matches[0]); } return $str;}
3.二进制流生成文件/** 二进制流生成文件* $_post 无法解释二进制流,需要用到 $globals['http_raw_post_data'] 或 php://input* $globals['http_raw_post_data'] 和 php://input 都不能用于 enctype=multipart/form-data* @param string $file 要生成的文件路径* @return boolean*/function binary_to_file($file){ $content = $globals['http_raw_post_data']; // 需要php.ini设置 if(empty($content)){ $content = file_get_contents('php://input'); // 不需要php.ini设置,内存压力小 } $ret = file_put_contents($file, $content, true); return $ret;}
4.强制更新图片缓存/** 強制更新圖片緩存* @param array $files 要更新的圖片* @param int $version 版本*/function force_reload_file($files=array(), $version=0){ $html = ''; if(!isset($_cookie['force_reload_page_'.$version])){ // 判斷是否已更新過 setcookie('force_reload_page_'.$version, true, time()+2592000); $html .= '<script type="text/javascript">'."\r\n"; $html .= 'window.onload = function(){'."\r\n"; $html .= 'settimeout(function(){window.location.reload(true); },1000);'."\r\n"; $html .= '}'."\r\n"; $html .= '</script>'; echo $html; exit(); }else{ // 讀取圖片一次,針對chrome優化 if($files){ $html .= '<script type="text/javascript">'."\r\n"; $html .= "<!--\r\n"; for($i=0,$max=count($files); $i<$max; $i++){ $html .= 'var force_reload_file_'.$i.' =new image()'."\r\n"; $html .= 'force_reload_file_'.$i.'.src="'.$files[$i].'"'."\r\n"; } $html .= "-->\r\n"; $html .= '</script>'; } } return $html;}
5.文件转base64 与 base64转文件/** 文件转base64输出* @param string $file 文件路径* @return string base64 string*/function filetobase64($file){ $base64_file = ''; if(file_exists($file)){ $mime_type = mime_content_type($file); $base64_data = base64_encode(file_get_contents($file)); $base64_file = 'data:'.$mime_type.';base64,'.$base64_data; } return $base64_file;}/** base64转文件输出* @param string $base64_data base64数据* @param string $file 要保存的文件路径* @return boolean*/function base64tofile($base64_data, $file){ if(!$base64_data || !$file){ return false; } return file_put_contents($file, base64_decode($base64_data), true);}
6.16进制颜色转10进制颜色/** 16进制颜色转10进制颜色,例#ff0000转rgb(255, 0, 0);* @param string $hexcolor* @return array*/function hex2rgb($hexcolor){ $color = str_replace('#', '', $hexcolor); if (strlen($color) > 3) { $rgb = array( 'r' => hexdec(substr($color, 0, 2)), 'g' => hexdec(substr($color, 2, 2)), 'b' => hexdec(substr($color, 4, 2)) ); } else { $r = substr($color, 0, 1) . substr($color, 0, 1); $g = substr($color, 1, 1) . substr($color, 1, 1); $b = substr($color, 2, 1) . substr($color, 2, 1); $rgb = array( 'r' => hexdec($r), 'g' => hexdec($g), 'b' => hexdec($b) ); } return $rgb;}
7.获取两时间段相差时间/** 获取两时间段相差时间* @param datetime $starttime* @param datetime $endtime* @return string*/function diff_time($starttime, $endtime){ $diff = abs(strtotime($starttime) - strtotime($endtime)); $days = (int)($diff/86400); $hours = (int)($diff/3600); if($days>0){ $ret = $days.' 天'; }elseif($hours>0){ $ret = $hours.' 小时'; }else{ $ret = '不足1小时'; } return $ret;}
8.延时输出内容/** 延时输出内容* @param int $sec 秒数,可以是小数例如 0.3*/function cache_flush($sec=2){ ob_flush(); flush(); usleep($sec*1000000);}
9.使用异或(xor)+key加密解密文件/** 文件加密,使用key与原文异或(xor)生成密文,解密则再执行一次异或即可* @param string $source 要加密或解密的文件* @param string $dest 加密或解密后的文件* @param string $key 密钥*/function file_encrypt($source, $dest, $key){ if(file_exists($source)){ $content = ''; // 处理后的字符串 $keylen = strlen($key); // 密钥长度 $index = 0; $fp = fopen($source, 'rb'); while(!feof($fp)){ $tmp = fread($fp, 1); $content .= $tmp ^ substr($key,$index%$keylen,1); $index++; } fclose($fp); return file_put_contents($dest, $content, true); }else{ return false; }}
10.获取文件或文件夹的拥有者,组用户,及权限/** 获取文件或文件夹的拥有者,组用户,及权限* @param string $filename* @return array*/function file_attribute($filename){ if(!file_exists($filename)){ return false; } $owner = posix_getpwuid(fileowner($filename)); $group = posix_getpwuid(filegroup($filename)); $perms = substr(sprintf('%o',fileperms($filename)),-4); $ret = array( 'owner' => $owner['name'], 'group' => $group['name'], 'perms' => $perms ); return $ret;}
11.删除空目录及空子目录/** 删除所有空目录* @param string $path 目录路径*/function rm_empty_dir($path){ if($handle = opendir($path)){ while(($file=readdir($handle))!==false){ // 遍历文件夹 if($file!='.' && $file!='..'){ $curfile = $path.'/'.$file; // 当前目录 if(is_dir($curfile)){ // 目录 rm_empty_dir($curfile); // 如果是目录则继续遍历 if(count(scandir($curfile))==2){ // 目录为空,=2是因为. 和 ..存在 rmdir($curfile); // 删除空目录 } } } } closedir($handle); }}
12.unicode转中文/* unicode 转 中文* @param string $str unicode 字符串* @return string*/function unescape($str) { $str = rawurldecode($str); preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/u",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(substr($v,0,2) == "%u"){ $ar[$k] = iconv("ucs-2be","utf-8",pack("h4",substr($v,-4))); }elseif(substr($v,0,3) == "&#x"){ $ar[$k] = iconv("ucs-2be","utf-8",pack("h4",substr($v,3,-1))); }elseif(substr($v,0,2) == "&#") { $ar[$k] = iconv("ucs-2be","utf-8",pack("n",substr($v,2,-1))); } } return join("",$ar);}
本篇介绍了使用php 常用自定义方法,更多相关内容请关注。
相关推荐:
如何通过php 使用异或(xor)加密/解密文件
通过php 如何获取一个变量的名字
了解php 对象克隆 clone的相关内容
以上就是如何使用php 常用自定义方法的详细内容。