最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一些php項目中比較通用的php自建函數(shù)的詳解

 更新時間:2013年06月06日 17:36:34   作者:  
本篇文章是對一些php項目中比較通用的php自建函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
以下一些php函數(shù)是我們it動力最常用的項目開發(fā)函數(shù),這些函數(shù)還算是在比較多的項目中使用到的,也是比較通用的。
1.請求接口的處理函數(shù)
復(fù)制代碼 代碼如下:

/**
 * 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數(shù)據(jù)哦! 
    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.獲取文件擴展名
復(fù)制代碼 代碼如下:

/**
 * @獲取文件擴展名
 * @$pic string 圖片路徑
 */ 
function get_file_ext($pic) { 
    return substr($pic, strrpos($pic, '.') + 1); 


3.可逆的加密、解密函數(shù)
復(fù)制代碼 代碼如下:

/**
 * 字符串加密
 * @param   $string     需加密的字符
 * @param   $operation  加密或解密
 * @param   $key        網(wǎng)站加密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 <= 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)); 
    } 


4.字符串轉(zhuǎn)十六進(jìn)制
復(fù)制代碼 代碼如下:

/**
* 字符串轉(zhuǎn)十六進(jìn)制
* @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; 
}

5.十六進(jìn)制轉(zhuǎn)字符串
復(fù)制代碼 代碼如下:

/**
* 十六進(jìn)制轉(zhuǎn)字符串
* @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; 


6.返回經(jīng)addslashes處理過的字符串或數(shù)組
復(fù)制代碼 代碼如下:

/**
* 返回經(jīng)addslashes處理過的字符串或數(shù)組
* @param $string 需要處理的字符串或數(shù)組
* @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.返回經(jīng)stripslashes處理過的字符串或數(shù)組
復(fù)制代碼 代碼如下:

/**
* 返回經(jīng)stripslashes處理過的字符串或數(shù)組
* @param $string 需要處理的字符串或數(shù)組
* @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.返回經(jīng) htmlspecialchars 處理過的字符串或數(shù)組
復(fù)制代碼 代碼如下:

/**
* 返回經(jīng) htmlspecialchars 處理過的字符串或數(shù)組
* @param $string 需要處理的字符串或數(shù)組
* @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
復(fù)制代碼 代碼如下:

/**
 * 獲取請求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
復(fù)制代碼 代碼如下:

/**
* 字符截取 支持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; 


11.產(chǎn)生隨機字符串
復(fù)制代碼 代碼如下:

/**
* 產(chǎn)生隨機字符串
*
* @param        int                $length    輸出長度 
* @param        string         $chars     可選的 ,默認(rèn)為 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; 


12.將字符串轉(zhuǎn)換為數(shù)組
復(fù)制代碼 代碼如下:

/**
* 將字符串轉(zhuǎn)換為數(shù)組
*
* @param  string  $data  字符串
* @return  array  返回數(shù)組格式,如果,data為空,則返回空數(shù)組
*/ 
function string2array($data) { 
  if($data == '') return array(); 
  eval("\$array = $data;"); 
  return $array; 


13.將數(shù)組轉(zhuǎn)換為字符串
復(fù)制代碼 代碼如下:

/**
* 將數(shù)組轉(zhuǎn)換為字符串
*
* @param  array  $data    數(shù)組
* @param  bool  $isformdata  如果為0,則不使用new_stripslashes處理,可選參數(shù),默認(rèn)為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.轉(zhuǎn)換字節(jié)數(shù)為其他單位
復(fù)制代碼 代碼如下:

/**
* 轉(zhuǎn)換字節(jié)數(shù)為其他單位
*
*
* @param        string        $filesize        字節(jié)大小
* @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; 


相關(guān)文章

  • 詳解PHP Swoole長連接常見問題

    詳解PHP Swoole長連接常見問題

    長連接就是指在基于tcp的通訊中,一直保持連接,不管當(dāng)前是否發(fā)送或者接收數(shù)據(jù)。本文將詳細(xì)介紹PHP Swoole長連接的常見問題。
    2021-05-05
  • php給圖片添加文字水印方法匯總

    php給圖片添加文字水印方法匯總

    在php中要給圖片加水印我們需要給php安裝GD庫了,這里我們不介紹GD庫安裝,只介紹怎么利用php給圖片添加文字水印的4種方法的匯總。有需要的小伙伴可以參考下。
    2015-08-08
  • CodeIgniter生成網(wǎng)站sitemap地圖的方法

    CodeIgniter生成網(wǎng)站sitemap地圖的方法

    用CodeIgniter只需要三步就可以生成網(wǎng)站sitemap地圖,方法很簡單,大家可以參考一下
    2013-11-11
  • PHP有序表查找之插值查找算法示例

    PHP有序表查找之插值查找算法示例

    這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • PHP消息隊列用法實例分析

    PHP消息隊列用法實例分析

    這篇文章主要介紹了PHP消息隊列用法,結(jié)合實例形式分析了PHP消息隊列用于Linux下進(jìn)程間通信的相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • phpinfo()中Loaded Configuration File(none)的解決方法

    phpinfo()中Loaded Configuration File(none)的解決方法

    這篇文章主要給大家介紹了phpinfo()中Loaded Configuration File(none)問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Php header()函數(shù)語法及使用代碼

    Php header()函數(shù)語法及使用代碼

    Php header()函數(shù)語法及使用代碼詳解,這里列出了header的常用常用狀態(tài)碼。
    2013-11-11
  • PHP mysql事務(wù)問題實例分析

    PHP mysql事務(wù)問題實例分析

    這篇文章主要介紹了PHP mysql事務(wù)問題,結(jié)合實例形式分析了PHP操作MySQL的myisam數(shù)據(jù)庫實現(xiàn)控制事務(wù)的相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • PHP 文件類型判斷代碼

    PHP 文件類型判斷代碼

    這篇文章主要為大家介紹一下判斷php文件類型的代碼,需要的朋友可以參考一下
    2009-03-03
  • php安裝dblib擴展,連接mssql的具體步驟

    php安裝dblib擴展,連接mssql的具體步驟

    下面小編就為大家?guī)硪黄猵hp安裝dblib擴展,連接mssql的具體步驟。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論

黔南| 西贡区| 博白县| 鱼台县| 宿州市| 绥芬河市| 巧家县| 拉孜县| 都安| 泸溪县| 筠连县| 姚安县| 大洼县| 寻甸| 射洪县| 廊坊市| 那坡县| 金坛市| 广东省| 沙田区| 马公市| 连城县| 茂名市| 师宗县| 巴青县| 井研县| 聊城市| 札达县| 惠州市| 铜山县| 和林格尔县| 中牟县| 漠河县| 新乐市| 通道| 改则县| 洪江市| 塔河县| 马边| 清河县| 成安县|