Detailed explanation of some common PHP self-built functions in PHP projects_PHP tutorial

WBOY
Release: 2016-07-21 15:08:50
Original
981 people have browsed it

The following PHP functions are the most commonly used project development functions of our IT power. These functions are used in many projects and are relatively common.
1. Request interface processing function

Copy code The code is as follows:

/**
* curl access program interface
* @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);
// We are POSTing data!
curl_setopt($ch, CURLOPT_POST, 1);
// Add the post variable
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
// dump(curl_error($ch));
curl_close($ch);
return json_decode($output, true);
}

2. Get the file extension
Copy the code The code is as follows:

/* *
* @Get file extension
* @$pic string image path
*/
function get_file_ext($pic) {
return substr($pic, strrpos($pic, '.') + 1);
}

3. Reversible encryption and decryption functions
Copy code The code is as follows:

/**
* String encryption
* @param $string Characters to be encrypted
* @param $operation Encryption or decryption
* @param $key Website encryption key to prevent cracking
* @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.字符串转十六进制
复制代码 代码如下:

/**
* Convert string to hexadecimal
* @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  $r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]); 
  return $r; 
}

5.十六进制转字符串
复制代码 代码如下:

/**
* Hexadecimal to string
* @param unknown_type $s
*/
function hex2str($s) {
$r = "";
for ( $i = 0; $i {
$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. Return the string or array processed by addslashes
Copy Code The code is as follows:

/**
* Returns the string or array processed by addslashes
* @param $string The string or array that needs to be processed
* @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. Return the string or array processed by stripslashes
Copy code The code is as follows:

/**
* Return the string or array processed by stripslashes
* @param $string The string or array to be processed
* @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. Return the string or array processed by htmlspecialchars
Copy code The code is as follows:

/**
* Returns the string or array processed by htmlspecialchars
* @param $string The string or array that needs to be processed
* @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. Get the request ip
Copy code The code is as follows:

/**
* Get request ip
*
* @return ip address
*/
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. Character interception supports UTF8/GBK
Copy code The code is as follows:

/**
* Character interception supports 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.产生随机字符串
复制代码 代码如下:

/**
* Generate random string
*
* @param int $length Output length
* @param string $chars Optional, default is 0123456789
* @return string 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. Convert string to array
Copy the code The code is as follows:

/**
* Convert string to array
*
* @param string $data String
* @return array Return array format, if data is empty, return empty array
*/
function string2array($data) {
if($data == '') return array();
eval("$array = $data;");
return $array;
}

13. Convert the array Convert to string
Copy code The code is as follows:

/**
* Convert array to string
*
* @param array $data Array
* @param bool $isformdata If it is 0, new_stripslashes processing is not used, optional parameter, default is 1
* @return string Returns a string, if data is empty, then returns empty
*/
function array2string($data, $isformdata = 1) {
if($data == '') return '';
if($isformdata) $data = new_stripslashes($data);
return addslashes(var_export($data, TRUE));
}

14. Convert the number of bytes to other units
Copy code The code is as follows:

/**
* Convert the number of bytes to other units
*
*
* @param $filesize string Size in bytes
* @return string Return size
*/
function sizecount($filesize) {
if ($filesize >= 1073741824) {
                                         🎜>             $ filesize = round($filesize / 1048576 * 100) / 100.' MB'; ' KB';
} else {
$filesize = $filesize.' Bytes';



http://www.bkjia.com/PHPjc/327409.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/327409.html

TechArticle

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template