跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

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

以下一些php函数是我们it动力最常用的项目开发函数,这些函数还算是在比较多的项目中使用到的,也是比较通用的。

1.请求接口的处理函数

PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。

下载复制代码代码如下:/*** 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.获取文件扩展名

复制代码代码如下:/*** @获取文件扩展名* @$pic string 图片路径*/ function get_file_ext($pic) {return substr($pic, strrpos($pic, '.') + 1);}

3.可逆的加密、解密函数

复制代码代码如下:/*** 字符串加密* @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         $rndkey[$i] = ord($cryptkey[$i % $key_length]);}for ($j = $i = 0; $i         $j = ($j + $box[$i] + $rndkey[$i]) % 256;$tmp = $box[$i];$box[$i] = $box[$j];$box[$j] = $tmp;}for ($a = $j = $i = 0; $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.字符串转十六进制

复制代码代码如下:/*** 字符串转十六进制* @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.十六进制转字符串

复制代码代码如下:/*** 十六进制转字符串* @param unknown_type $s*/ function hex2str($s) {$r = "";for ( $i = 0; $i{$x1 = ord($s{$i});$x1 = ($x1>=48 && $x1    $x2 = ord($s{$i+1});$x2 = ($x2>=48 && $x2    $r .= chr((($x1   }return $r;}

6.返回经addslashes处理过的字符串或数组

复制代码代码如下:/*** 返回经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处理过的字符串或数组

复制代码代码如下:/*** 返回经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 处理过的字符串或数组复制代码代码如下:/*** 返回经 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

复制代码代码如下:/*** 获取请求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复制代码代码如下:/*** 字符截取 支持UTF8/GBK* @param $string* @param $length* @param $dot*/ function str_cut($string, $length, $dot = '...') {$strlen = strlen($string);if($strlen   $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       $t = ord($string[$n]);if($t == 9 || $t == 10 || (32         $tn = 1; $n++; $noc++;} elseif(194         $tn = 2; $n += 2; $noc += 2;} elseif(224         $tn = 3; $n += 3; $noc += 2;} elseif(240         $tn = 4; $n += 4; $noc += 2;} elseif(248         $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       $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.产生随机字符串

复制代码代码如下:/*** 产生随机字符串** @param        int                $length    输出长度* @param        string         $chars     可选的 ,默认为 0123456789* @return     string         字符串*/ function random($length, $chars = '0123456789') {$hash = '';$max = strlen($chars) - 1;for($i = 0; $i     $hash .= $chars[mt_rand(0, $max)];}return $hash;}

12.将字符串转换为数组

复制代码代码如下:/*** 将字符串转换为数组** @param  string  $data  字符串* @return  array  返回数组格式,如果,data为空,则返回空数组*/ function string2array($data) {if($data == '') return array();eval("\$array = $data;");return $array;}

13.将数组转换为字符串

复制代码代码如下:/*** 将数组转换为字符串** @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.转换字节数为其他单位

复制代码代码如下:/*** 转换字节数为其他单位*** @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;}

相关文章