ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP实用代码片断

2019-06-16 18:04:19  阅读:229  来源: 互联网

标签:function HTTP string SERVER 实用 else return 片断 PHP


几个简单又实用的PHP函数


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /* * *************************  * 生成随机字符串,可以自己扩展   //若想唯一,只需在开头加上用户id  * $type可以为:upper(只生成大写字母),lower(只生成小写字母),number(只生成数字)  * $len为长度,定义字符串长度  * mark 2017/8/15  * ************************** */   function _random($type, $len = 0) {     $new = '';     $string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'//数据池     if ($type == 'upper') {         for ($i = 0; $i < $len; $i++) {             $new .= $string[mt_rand(36, 61)];         }         return $new;     }     if ($type == 'lower') {         for ($i = 0; $i < $len; $i++) {             $new .= $string[mt_rand(10, 35)];         }         return $new;     }     if ($type == 'number') {         for ($i = 0; $i < $len; $i++) {             $new .= $string[mt_rand(0, 9)];         }         return $new;     } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 //计算该月有几天 function getdaysInmonth($month, $year) {     $days = '';     if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12)         $days = 31;     else if ($month == 4 || $month == 6 || $month == 9 || $month == 11)         $days = 30;     else if ($month == 2) {         if (isLeapyear($year)) {             $days = 29;         } else {             $days = 28;         }     }     return ($days); }   //判断是否为润年 function isLeapyear($year) {     if ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0)) {         return (true);     } else {         return (false);     } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //生成订单15位 function auto_order($ord = 0) {     //自动生成订单号  传入参数为0 或者1   0为本地  1为线上订单     if ($ord == 0) {         $str = '00' . time() . rand(1000, 9999); //00 本地订单     } else {         $str = '99' . time() . rand(1000, 9999);  //11 线上订单     }     return $str; }   //生成订单15位 function auto_new_order($ord = 0) {     srand(time());     //自动生成订单号  传入参数为0 或者1   0为本地  1为线上订单     if ($ord == 0) {         $str = '00' . time() . mt_rand(100000,999999); //00 本地订单     } else {         $str = '11' . time() . mt_rand(100000,999999);  //11 线上订单     }     return $str; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /**  * 检测是否为UTF8编码  * @param $string 检测字符串  * @return bool  */ function is_utf8($string) {     return preg_match('%^(?:           [\x09\x0A\x0D\x20-\x7E]            # ASCII         | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte         |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs         | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte         |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates         |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3         | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15         |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16     )*$%xs', $string); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 //处理json字符中的特殊字符 function getJsonToArr($result,$return_array=true) {         $tempArr = NULL;         $result = preg_replace('/([^\\\])(":)(\d{9,})(,")/i', '${1}${2}"${3}"${4}', $result); //taobao bug,number >2^32         $tempArr = json_decode($result, $return_array);         if ($tempArr == NULL) {             $patterns = array('/,+\s*\}/', '/,+\s*\]/', '/"\s+|\s+"/', '/\n|\r|\t/','/\\\/','/ss+/');             $replacements = array('}', ']', '"', ' ','',' ');             $result = preg_replace($patterns, $replacements, $result);                      $tempArr = json_decode($result, $return_array);         }           return $tempArr; }     //非法字符过滤函数 function has_unsafeword($str) {     $regex = "/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\.|\/|\;|\'|\`|\=|\\\|\|/";     return preg_replace($regex,"",$str);   }   //去空格,以及字符添加斜杠 function _trim(&$value) {     Return addslashes(trim($value)); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /**  * 将多维数组转为一维数组  * @param array $arr  * @return array  */ function ArrMd2Ud($arr) {     #将数值第一元素作为容器,作地址赋值。     $ar_room = &$arr[key($arr)];     #第一容器不是数组进去转呀     if (!is_array($ar_room)) {         #转为成数组         $ar_room = array($ar_room);     }     #指针下移     next($arr);     #遍历     while (list($k, $v) = each($arr)) {         #是数组就递归深挖,不是就转成数组         $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);         #递归合并         $ar_room = array_merge_recursive($ar_room, $v);         #释放当前下标的数组元素         unset($arr[$k]);     }     return $ar_room; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 /**  * 判断是PC端还是wap端访问  * @return type判断手机移动设备访问  */ function isMobile() {     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备     if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))     {         return true;     }     // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息     if (isset ($_SERVER['HTTP_VIA']))     {         // 找不到为flase,否则为true         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;     }     // 脑残法,判断手机发送的客户端标志,兼容性有待提高     if (isset ($_SERVER['HTTP_USER_AGENT']))     {         $clientkeywords = array ('nokia',             'sony',             'ericsson',             'mot',             'samsung',             'htc',             'sgh',             'lg',             'sharp',             'sie-',             'philips',             'panasonic',             'alcatel',             'lenovo',             'iphone',             'ipod',             'blackberry',             'meizu',             'android',             'netfront',             'symbian',             'ucweb',             'windowsce',             'palm',             'operamini',             'operamobi',             'openwave',             'nexusone',             'cldc',             'midp',             'wap',             'mobile'             );         // 从HTTP_USER_AGENT中查找手机浏览器的关键字         if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))         {             return true;         }     }     // 协议法,因为有可能不准确,放到最后判断     if (isset ($_SERVER['HTTP_ACCEPT']))     {         // 如果只支持wml并且不支持html那一定是移动设备         // 如果支持wml和html但是wml在html之前则是移动设备         if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))         {             return true;         }     }     return false; } //判断是否为安卓手机 public function isAndroid() {     if(isset($_SERVER['HTTP_USER_AGENT'])){         $agent = strtolower($_SERVER['HTTP_USER_AGENT']);         if(strpos($agent,'android') !== false)             return true;     }     return false; } //判断是否为iphone或者ipad public function isIos() {     if(isset($_SERVER['HTTP_USER_AGENT'])){         $agent = strtolower($_SERVER['HTTP_USER_AGENT']);         if(strpos($agent, 'iphone')||strpos($agent, 'ipad'))             return true;     }     return false; } //判断是否为微信内置浏览器打开 public function isWechet() {     if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){         return true;     }     return false; } //整合到一起,判断当前设备,1:安卓;2:IOS;3:微信;0:未知 public function isDevice() {     if($_SERVER['HTTP_USER_AGENT']){         $agent = strtolower($_SERVER['HTTP_USER_AGENT']);         if(strpos($agent, 'micromessenger') !== false)             return 3;         elseif(strpos($agent, 'iphone')||strpos($agent, 'ipad'))             return 2;         else             return 1;     }     return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 /**  * 日期转换成几分钟前  */ public function formatTime($date) {     $timer = strtotime($date);     $diff = $_SERVER['REQUEST_TIME'] - $timer;     $day = floor($diff / 86400);     $free = $diff % 86400;     if($day > 0) {         if(15 < $day && $day <30){             return "半个月前";         }elseif(30 <= $day && $day <90){             return "1个月前";         }elseif(90 <= $day && $day <187){             return "3个月前";         }elseif(187 <= $day && $day <365){             return "半年前";         }elseif(365 <= $day){             return "1年前";         }else{             return $day."天前";         }     }else{         if($free>0){             $hour = floor($free / 3600);             $free = $free % 3600;             if($hour>0){                 return $hour."小时前";             }else{                 if($free>0){                     $min = floor($free / 60);                     $free = $free % 60;                 if($min>0){                     return $min."分钟前";                 }else{                     if($free>0){                         return $free."秒前";                     }else{                         return '刚刚';                     }                 }                 }else{                     return '刚刚';                 }             }         }else{             return '刚刚';         }     } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /**  * 截取长度  */ public function getSubString($rawString,$length='100',$etc = '...',$isStripTag=true){     $rawString = str_replace('_baidu_page_break_tag_', '', $rawString);     $result = '';     if($isStripTag)         $string = html_entity_decode(trim(strip_tags($rawString)), ENT_QUOTES, 'UTF-8');     else         $string = trim($rawString);     $strlen = strlen($string);     for ($i = 0; (($i < $strlen) && ($length > 0)); $i++){         if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))         {             if ($length < 1.0){                 break;             }             $result .= substr($string, $i, $number);             $length -= 1.0;             $i += $number - 1;         }else{             $result .= substr($string, $i, 1);             $length -= 0.5;         }     }     if($isStripTag)         $result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');               if ($i < $strlen){         $result .= $etc;     }     return $result; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 /**  * utf-8和gb2312自动转化  * @param unknown $string  * @param string $outEncoding  * @return unknown|string  */ function safeEncoding($string,$outEncoding = 'UTF-8') {     $encoding = "UTF-8";     for($i = 0; $i < strlen ( $string ); $i ++) {         if (ord ( $string {$i} ) < 128)             continue;           if ((ord ( $string {$i} ) & 224) == 224) {             // 第一个字节判断通过             $char = $string {++ $i};             if ((ord ( $char ) & 128) == 128) {                 // 第二个字节判断通过                 $char = $string {++ $i};                 if ((ord ( $char ) & 128) == 128) {                     $encoding = "UTF-8";                     break;                 }             }         }         if ((ord ( $string {$i} ) & 192) == 192) {             // 第一个字节判断通过             $char = $string {++ $i};             if ((ord ( $char ) & 128) == 128) {                 // 第二个字节判断通过                 $encoding = "GB2312";                 break;             }         }     }       if (strtoupper ( $encoding ) == strtoupper ( $outEncoding ))         return $string;     else         return @iconv ( $encoding, $outEncoding, $string ); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /**  *对内容中的关键词添加链接  *只处理第一次出现的关键词,对已有链接的关键不会再加链接,支持中英文  *$content:string 原字符串  *$keyword:string  关键词  *$link:string,链接  */ function yang_keyword_link($content,$keyword,$link){      //排除图片中的关键词      $content = preg_replace( '|(<img[^>]*?)('.$keyword.')([^>]*?>)|U', '$1%&&&&&%$3', $content);      $regEx = '/(?!((<.*?)|(<a.*?)))('.$keyword.')(?!(([^<>]*?)>)|([^>]*?<\/a>))/si';      $url='<a href="'.$link.'" target="_blank" class="content_guanjianci">'.$keyword.'</a>';      $content = preg_replace($regEx,$url,$content,1);      //还原图片中的关键词      $content=str_replace('%&&&&&%',$keyword,$content);      return $content;  }

标签:function,HTTP,string,SERVER,实用,else,return,片断,PHP
来源: https://www.cnblogs.com/yuanscn/p/11032299.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有