源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

一些php项目中比较通用的php自建函数的详解

  • 时间:2020-06-02 20:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:一些php项目中比较通用的php自建函数的详解
以下一些php函数是我们it动力最常用的项目开发函数,这些函数还算是在比较多的项目中使用到的,也是比较通用的。 [b]1.请求接口的处理函数 [/b]
[u]复制代码[/u] 代码如下:
/**  * curl访问程序接口  * @param string  * @return array  */  function getCurlDate($url, $datas, $key) {      $datas['time'] = $_SERVER['REQUEST_TIME'] + 300;      $post_data['post'] = urlencode(authcode(serialize($datas), "ENCODE", $key));  //    echo $url;      $ch = curl_init();      curl_setopt($ch, CURLOPT_URL, $url);      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      // 我们在POST数据哦!      curl_setopt($ch, CURLOPT_POST, 1);      // 把post的变量加上      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);      $output = curl_exec($ch);   //   dump(curl_error($ch));      curl_close($ch);      return json_decode($output, true);  } 
[b]2.获取文件扩展名 [/b]
[u]复制代码[/u] 代码如下:
/**  * @获取文件扩展名  * @$pic string 图片路径  */  function get_file_ext($pic) {      return substr($pic, strrpos($pic, '.') + 1);  } 
[b]3.可逆的加密、解密函数 [/b]
[u]复制代码[/u] 代码如下:
/**  * 字符串加密  * @param   $string     需加密的字符  * @param   $operation  加密或解密  * @param   $key        网站加密key,防止破解  * @return  string  */  function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {      $ckey_length = 4;      $key = md5($key ? $key : '^www.itokit.com$');      $keya = md5(substr($key, 0, 16));      $keyb = md5(substr($key, 16, 16));      $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : '';      $cryptkey = $keya . md5($keya . $keyc);      $key_length = strlen($cryptkey);      $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('0d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;      $string_length = strlen($string);      $result = '';      $box = range(0, 255);      $rndkey = array();      for ($i = 0; $i <= 255; $i++) {          $rndkey[$i] = ord($cryptkey[$i % $key_length]);      }      for ($j = $i = 0; $i < 256; $i++) {          $j = ($j + $box[$i] + $rndkey[$i]) % 256;          $tmp = $box[$i];          $box[$i] = $box[$j];          $box[$j] = $tmp;      }      for ($a = $j = $i = 0; $i < $string_length; $i++) {          $a = ($a + 1) % 256;          $j = ($j + $box[$a]) % 256;          $tmp = $box[$a];          $box[$a] = $box[$j];          $box[$j] = $tmp;          $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));      }      if ($operation == 'DECODE') {          if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)) {              return substr($result, 26);          } else {              return '';          }      } else {          return $keyc . str_replace('=', '', base64_encode($result));      }  } 
[b]4.字符串转十六进制 [/b]
[u]复制代码[/u] 代码如下:
/** * 字符串转十六进制 * @param unknown_type $s */  function str2hex($s) {    $r = "";    $hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");    for ($i=0; $i<strlen($s); $i++)    $r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]);    return $r;  }
[b]5.十六进制转字符串 [/b]
[u]复制代码[/u] 代码如下:
/** * 十六进制转字符串 * @param unknown_type $s */  function hex2str($s) {    $r = "";    for ( $i = 0; $i<strlen($s); $i += 2)    {      $x1 = ord($s{$i});      $x1 = ($x1>=48 && $x1<58) ? $x1-48 : $x1-97+10;      $x2 = ord($s{$i+1});      $x2 = ($x2>=48 && $x2<58) ? $x2-48 : $x2-97+10;      $r .= chr((($x1 << 4) & 0xf0) | ($x2 & 0x0f));    }    return $r;  } 
[b]6.返回经addslashes处理过的字符串或数组 [/b]
[u]复制代码[/u] 代码如下:
/** * 返回经addslashes处理过的字符串或数组 * @param $string 需要处理的字符串或数组 * @return mixed */  function new_addslashes($string){    if(!is_array($string)) return addslashes($string);    foreach($string as $key => $val) $string[$key] = new_addslashes($val);    return $string;  }  /**/  function addslashes_deep($string)  {    return is_array($string) ? array_map('addslashes_deep', $string) : addslashes($string);  } 
[b]7.返回经stripslashes处理过的字符串或数组 [/b]
[u]复制代码[/u] 代码如下:
/** * 返回经stripslashes处理过的字符串或数组 * @param $string 需要处理的字符串或数组 * @return mixed */  function new_stripslashes($string) {    if(!is_array($string)) return stripslashes($string);    foreach($string as $key => $val) $string[$key] = new_stripslashes($val);    return $string;  }  /**/  function stripslashes_deep($string)  {    return is_array($string) ? array_map('stripslashes_deep', $string) : stripslashes($string);  } 
[b]8.返回经 htmlspecialchars 处理过的字符串或数组 [/b]
[u]复制代码[/u] 代码如下:
/** * 返回经 htmlspecialchars 处理过的字符串或数组 * @param $string 需要处理的字符串或数组 * @return mixed */  function new_html_special_chars($string) {    if(!is_array($string)) return htmlspecialchars($string);    foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);    return $string;  } 
[b]9.获取请求ip [/b]
[u]复制代码[/u] 代码如下:
/**  * 获取请求ip  *  * @return ip地址  */  function ip() {    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {      $ip = getenv('HTTP_CLIENT_IP');    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {      $ip = getenv('HTTP_X_FORWARDED_FOR');    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {      $ip = getenv('REMOTE_ADDR');    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {      $ip = $_SERVER['REMOTE_ADDR'];    }    return preg_match ( '/[d.]{7,15}/', $ip, $matches ) ? $matches [0] : '';  } 
[b]10.字符截取 支持UTF8/GBK [/b]
[u]复制代码[/u] 代码如下:
/** * 字符截取 支持UTF8/GBK * @param $string * @param $length * @param $dot */  function str_cut($string, $length, $dot = '...') {    $strlen = strlen($string);    if($strlen <= $length) return $string;    $string = str_replace(array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string);    $strcut = '';    if(strtolower(CHARSET) == 'utf-8') {      $length = intval($length-strlen($dot)-$length/3);      $n = $tn = $noc = 0;      while($n < strlen($string)) {        $t = ord($string[$n]);        if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {          $tn = 1; $n++; $noc++;        } elseif(194 <= $t && $t <= 223) {          $tn = 2; $n += 2; $noc += 2;        } elseif(224 <= $t && $t <= 239) {          $tn = 3; $n += 3; $noc += 2;        } elseif(240 <= $t && $t <= 247) {          $tn = 4; $n += 4; $noc += 2;        } elseif(248 <= $t && $t <= 251) {          $tn = 5; $n += 5; $noc += 2;        } elseif($t == 252 || $t == 253) {          $tn = 6; $n += 6; $noc += 2;        } else {          $n++;        }        if($noc >= $length) {          break;        }      }      if($noc > $length) {        $n -= $tn;      }      $strcut = substr($string, 0, $n);      $strcut = str_replace(array('∵', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);    } else {      $dotlen = strlen($dot);      $maxi = $length - $dotlen - 1;      $current_str = '';      $search_arr = array('&',' ', '"', "'", '“', '”', '—', '<', '>', '·', '…','∵');     $replace_arr = array('&',' ', '"', ''', '“', '”', '—', '<', '>', '·', '…',' ');      $search_flip = array_flip($search_arr);      for ($i = 0; $i < $maxi; $i++) {        $current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];        if (in_array($current_str, $search_arr)) {          $key = $search_flip[$current_str];          $current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str);        }        $strcut .= $current_str;      }    }    return $strcut.$dot;  } 
[b]11.产生随机字符串 [/b]
[u]复制代码[/u] 代码如下:
/** * 产生随机字符串 * * @param        int                $length    输出长度  * @param        string         $chars     可选的 ,默认为 0123456789 * @return     string         字符串 */  function random($length, $chars = '0123456789') {    $hash = '';    $max = strlen($chars) - 1;    for($i = 0; $i < $length; $i++) {      $hash .= $chars[mt_rand(0, $max)];    }    return $hash;  } 
[b]12.将字符串转换为数组 [/b]
[u]复制代码[/u] 代码如下:
/** * 将字符串转换为数组 * * @param  string  $data  字符串 * @return  array  返回数组格式,如果,data为空,则返回空数组 */  function string2array($data) {    if($data == '') return array();    eval("$array = $data;");    return $array;  } 
[b]13.将数组转换为字符串 [/b]
[u]复制代码[/u] 代码如下:
/** * 将数组转换为字符串 * * @param  array  $data    数组 * @param  bool  $isformdata  如果为0,则不使用new_stripslashes处理,可选参数,默认为1 * @return  string  返回字符串,如果,data为空,则返回空 */  function array2string($data, $isformdata = 1) {    if($data == '') return '';    if($isformdata) $data = new_stripslashes($data);    return addslashes(var_export($data, TRUE));  } 
[b]14.转换字节数为其他单位 [/b]
[u]复制代码[/u] 代码如下:
/** * 转换字节数为其他单位 * * * @param        string        $filesize        字节大小 * @return        string        返回大小 */  function sizecount($filesize) {          if ($filesize >= 1073741824) {                  $filesize = round($filesize / 1073741824 * 100) / 100 .' GB';          } elseif ($filesize >= 1048576) {                  $filesize = round($filesize / 1048576 * 100) / 100 .' MB';          } elseif($filesize >= 1024) {                  $filesize = round($filesize / 1024 * 100) / 100 . ' KB';          } else {                  $filesize = $filesize.' Bytes';          }          return $filesize;  } 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部