时时商务社区

标题: 一些php项目中比较通用的php自建函数的详解 [打印本页]

作者: 阿情    时间: 2018-2-14 08:21

            以下一些php函数是我们it动力最常用的项目开发函数,这些函数还算是在比较多的项目中使用到的,也是比较通用的。
1.请求接口的处理函数
[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);  
}  
2.获取文件扩展名
[U]复制代码[/U] 代码如下:
/**
* @获取文件扩展名
* @$pic string 图片路径
*/  
function get_file_ext($pic) {  
    return substr($pic, strrpos($pic, '.') + 1);  
}  
3.可逆的加密、解密函数
[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('%010d', $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  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));  
    }  
}  
4.字符串转十六进制
[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> 4)] . $hexes [(ord($s{$i}) & 0xf)]);  
  return $r;  
}
5.十六进制转字符串
[U]复制代码[/U] 代码如下:
/**
* 十六进制转字符串
* @param unknown_type $s
*/  
function hex2str($s) {  
  $r = "";  
  for ( $i = 0; $i=48 && $x1=48 && $x2
6.返回经addslashes处理过的字符串或数组
[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);  
}  
7.返回经stripslashes处理过的字符串或数组
[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);  
}  
8.返回经 htmlspecialchars 处理过的字符串或数组
[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;  
}  
9.获取请求ip
[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] : '';  
}  
10.字符截取 支持UTF8/GBK
[U]复制代码[/U] 代码如下:
/**
* 字符截取 支持UTF8/GBK
* @param $string
* @param $length
* @param $dot
*/  
function str_cut($string, $length, $dot = '...') {  
  $strlen = strlen($string);  
  if($strlen ', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '', '·', '…'), $string);  
  $strcut = '';  
  if(strtolower(CHARSET) == 'utf-8') {  
    $length = intval($length-strlen($dot)-$length/3);  
    $n = $tn = $noc = 0;  
    while($n = $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  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;  
}  
11.产生随机字符串
[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
12.将字符串转换为数组
[U]复制代码[/U] 代码如下:
/**
* 将字符串转换为数组
*
* @param  string  $data  字符串
* @return  array  返回数组格式,如果,data为空,则返回空数组
*/  
function string2array($data) {  
  if($data == '') return array();  
  eval("\$array = $data;");  
  return $array;  
}  
13.将数组转换为字符串
[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));  
}  
14.转换字节数为其他单位
[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;  
}  
            
            
        




欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2