一些php项目中比较通用的php自建函数的详解
2023-06-13 09:15:01 时间
以下一些php函数是我们it动力最常用的项目开发函数,这些函数还算是在比较多的项目中使用到的,也是比较通用的。
1.请求接口的处理函数
复制代码代码如下:
/**
*curl访问程序接口
*@paramstring
*@returnarray
*/
functiongetCurlDate($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);
returnjson_decode($output,true);
}
/**
*@获取文件扩展名
*@$picstring图片路径
*/
functionget_file_ext($pic){
returnsubstr($pic,strrpos($pic,".")+1);
}
/**
*字符串加密
*@param $string 需加密的字符
*@param $operation 加密或解密
*@param $key 网站加密key,防止破解
*@return string
*/
functionauthcode($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)){
returnsubstr($result,26);
}else{
return"";
}
}else{
return$keyc.str_replace("=","",base64_encode($result));
}
}
/**
*字符串转十六进制
*@paramunknown_type$s
*/
functionstr2hex($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;
}
/**
*十六进制转字符串
*@paramunknown_type$s
*/
functionhex2str($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;
}
/**
*返回经addslashes处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/
functionnew_addslashes($string){
if(!is_array($string))returnaddslashes($string);
foreach($stringas$key=>$val)$string[$key]=new_addslashes($val);
return$string;
}
/**/
functionaddslashes_deep($string)
{
returnis_array($string)?array_map("addslashes_deep",$string):addslashes($string);
}
/**
*返回经stripslashes处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/
functionnew_stripslashes($string){
if(!is_array($string))returnstripslashes($string);
foreach($stringas$key=>$val)$string[$key]=new_stripslashes($val);
return$string;
}
/**/
functionstripslashes_deep($string)
{
returnis_array($string)?array_map("stripslashes_deep",$string):stripslashes($string);
}
/**
*返回经htmlspecialchars处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/
functionnew_html_special_chars($string){
if(!is_array($string))returnhtmlspecialchars($string);
foreach($stringas$key=>$val)$string[$key]=new_html_special_chars($val);
return$string;
}
/**
*获取请求ip
*
*@returnip地址
*/
functionip(){
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"];
}
returnpreg_match("/[\d\.]{7,15}/",$ip,$matches)?$matches[0]:"";
}
/**
*字符截取支持UTF8/GBK
*@param$string
*@param$length
*@param$dot
*/
functionstr_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;
}
/**
*产生随机字符串
*
*@param int $length 输出长度
*@param string $chars 可选的,默认为0123456789
*@return string 字符串
*/
functionrandom($length,$chars="0123456789"){
$hash="";
$max=strlen($chars)-1;
for($i=0;$i<$length;$i++){
$hash.=$chars[mt_rand(0,$max)];
}
return$hash;
}
/**
*将字符串转换为数组
*
*@param string $data 字符串
*@return array 返回数组格式,如果,data为空,则返回空数组
*/
functionstring2array($data){
if($data=="")returnarray();
eval("\$array=$data;");
return$array;
}
/**
*将数组转换为字符串
*
*@param array $data 数组
*@param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
*@return string 返回字符串,如果,data为空,则返回空
*/
functionarray2string($data,$isformdata=1){
if($data=="")return"";
if($isformdata)$data=new_stripslashes($data);
returnaddslashes(var_export($data,TRUE));
}
/**
*转换字节数为其他单位
*
*
*@param string $filesize 字节大小
*@return string 返回大小
*/
functionsizecount($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静态延迟方法,phpstatic延迟静态绑定_PHP教程
- PHP编译参数configure配置详解,以及php.ini说明
- 连接 MySQL 数据库PHP代码详解数据库
- 安装apache、php详解程序员
- MySQL异常捕获:使用PHP技巧轻松完成(php捕获mysql异常)
- 借助 PHP 与 MySQL 轻松实现文件下载(php和mysql下载)
- 数据深入了解:PHP查询MySQL数据库(php显示mysql)
- 的数据库连接PHP与Oracle数据库的连接技术指南(php与oracle)
- Redis实现长连接:PHP开发入门(redis长连接php)
- PHP编程:如何获取和处理MySQL错误信息(php获取mysql错误)
- MySQL和PHP编程:构建数据库连接桥梁(mysql与php连接)
- 脚本定时执行PHP脚本任务:Linux下的解决方案(linux定时php)
- PHP封装Redis:提高工作效率(封装php redis)
- PHP连接MS SQL服务器添加数据(php 添加mssql)
- PHP与MSSQL搭配实现高效多用户并发访问(php mssql并发)
- PHP操作MySQL数据库,轻松获取数据。(php访问mysql数据库)
- Linux上运行PHP文件的简单操作(linux运行php文件)
- 基于PHP的Redis队列监控实践(redis队列监控php)
- 超级全面的PHP面试题整理集合
- php生成随机数或者字符串的代码
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- LAMP服务器性能优化技巧之加速PHP
- PHP得到某段时间区间的时间戳php定时任务
- PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
- php判断服务器操作系统的类型
- php中strtotime函数用法详解