千家信息网

一些php项目中比较通用的php自建函数有哪些

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了一些php项目中比较通用的php自建函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。以下一些php函数是我们
千家信息网最后更新 2026年11月03日一些php项目中比较通用的php自建函数有哪些

这篇文章主要介绍了一些php项目中比较通用的php自建函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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

复制代码 代码如下:


/**
* 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('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));
}
}


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<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.返回经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 <= $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.产生随机字符串

复制代码 代码如下:


/**
* 产生随机字符串
*
* @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;
}


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;
}

感谢你能够认真阅读完这篇文章,希望小编分享的"一些php项目中比较通用的php自建函数有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

代码 字符 字符串 数组 处理 函数 加密 项目 十六进制 篇文章 字节 支持 单位 大小 扩展名 接口 文件 价值 兴趣 动力 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 南京欣网互联网络科技有限公司 互联网与科技发展 北京互联网科技有限公司 华中科技大学互联网 上游互联网科技 互联网科技大会 四个字互联网科技公司取名 无锡溥仪互联网科技有限公司 安控科技rtu产品工业互联网 现代科技和互联网有关系吗 常德市电业局互联网科技部 重庆威客帮互联网科技 搜狐科技互联网 华夏恒生科技与互联网科技 沐思想互联网科技有限公司 广州千川互联网科技有限公司 保山互联网科技靠谱吗 广州三三互联网科技有限公司 互联网金融金融科技 互联网实体化科技化 来此购互联网科技有限公司 搜狐科技互联网 深圳市优智互联网科技有限公司 长沙茂晟互联网科技有限公司 互联网数据科技专业 互联网金融科技名词解释 徐州市互联网科技有限公司 广东工业互联网大赛深圳学泰科技 山东大美朱楼互联网科技有限公司
0