Laravel和ThinkPHP个人常用自定义函数库

1. 字符串转换为数组(主要用于把分隔符调整到第二个参数)

/**
 * [os_Str2arr 字符串转换为数组]
 * 主要用于把分隔符调整到第二个参数
 * @param  [type] $str  [要分割的字符串]
 * @param  string $glue [分割符]
 * @return [type]       [description]
 */
function os_Str2arr($str, $glue = ','){
    return explode($glue, $str);
}

2. 数组转换为字符串(主要用于把分隔符调整到第二个参数)

/**
 * [os_Arr2str 数组转换为字符串]
 * 主要用于把分隔符调整到第二个参数
 * @param  [type] $arr  [要连接的数组]
 * @param  string $glue [分割符]
 * @return [type]       [description]
 */
function os_Arr2str($arr, $glue = ','){
    return implode($glue, $arr);
}

3. 转为一维数组(不管几维数组,都转为一维数组)

/**
 * [os_ArrayChange 转为一维数组]
 * @param  [type] $arr [数组数据]
 * @return [type]      [description]
 */
function os_ArrayChange($arr){
    static $arr2;
    foreach($arr as $v){
        if(is_array($v)){
            arrayChange($v);
        }else{
            $arr2[]=$v;
        }
    }
    return $arr2;
}

4. 友好的时间显示

/**
 * [os_Date 友好的时间显示]
 * @param  [type] $sTime [待显示的时间]
 * @param  string $type  [类型. normal | mohu | full | ymd | other]
 * @return [type]        [description]
 */
function os_Date($sTime,$type = 'normal') {
    //sTime=源时间,cTime=当前时间,dTime=时间差
    $cTime        =    time();
    $dTime        =    $cTime - $sTime;
    $dDay        =    intval(date("z",$cTime)) - intval(date("z",$sTime));
    //$dDay        =    intval($dTime/3600/24);
    $dYear        =    intval(date("Y",$cTime)) - intval(date("Y",$sTime));
    //normal:n秒前,n分钟前,n小时前,日期
    if($type=='normal'){
        if( $dTime < 60 ){
            return $dTime."秒前";
        }elseif( $dTime < 3600 ){
            return intval($dTime/60)."分钟前";
        //今天的数据.年份相同.日期相同.
        }elseif( $dYear==0 && $dDay == 0  ){
            //return intval($dTime/3600)."小时前";
            return '今天'.date('H:i',$sTime);
        }elseif($dYear==0){
            return date("m月d日 H:i",$sTime);
        }else{
            return date("Y-m-d H:i",$sTime);
        }
    }elseif($type=='mohu'){
        if( $dTime < 60 ){
            return $dTime."秒前";
        }elseif( $dTime < 3600 ){
            return intval($dTime/60)."分钟前";
        }elseif( $dTime >= 3600 && $dDay == 0  ){
            return intval($dTime/3600)."小时前";
        }elseif( $dDay > 0 && $dDay<=7 ){
            return intval($dDay)."天前";
        }elseif( $dDay > 7 &&  $dDay <= 30 ){
            return intval($dDay/7) . '周前';
        }elseif( $dDay > 30 ){
            return intval($dDay/30) . '个月前';
        }
    //full: Y-m-d , H:i:s
    }elseif($type=='full'){
        return date("Y-m-d , H:i:s",$sTime);
    }elseif($type=='ymd'){
        return date("Y-m-d",$sTime);
    }else{
        if( $dTime < 60 ){
            return $dTime."秒前";
        }elseif( $dTime < 3600 ){
            return intval($dTime/60)."分钟前";
        }elseif( $dTime >= 3600 && $dDay == 0  ){
            return intval($dTime/3600)."小时前";
        }elseif($dYear==0){
            return date("Y-m-d H:i:s",$sTime);
        }else{
            return date("Y-m-d H:i:s",$sTime);
        }
    }
}

5. 时间戳转普通时间

/**
 * [os_Time 时间戳转普通时间]
 * @param  [type] $res [时间戳]
 * @param  string $lei [时间格式]
 * @return [type]      [description]
 */
function os_Time($res,$lei='Y-m-d H:i:s'){
    return date($lei,$res);
}

6. 生成随机字符

/**
 * [os_Random 生成随机字符]
 * @param  integer $len  [产生字符串的长度]
 * @param  integer $type [类型. 默认和0为大小写字母和数字 | 1小写字母 | 2大写字母 | 3数字 | 4大小写字母 | 5小写字母和数字 | 6大写字母和数字]
 * @return [string]      [随机字符串]
 */
function os_Random($len = 6,$type = 0) {
	$chars_a = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
	$chars_b = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
	$chars_c = "0,1,2,3,4,5,6,7,8,9";
	$chars_d = '';
	if($type==0){//全部字符串(大小写字母和数字)
		$chars_d = $chars_a.",".$chars_b.",".$chars_c;
	}
	if ($type==1) {//小写字母
		$chars_d = $chars_a;
	}
	if ($type==2) {//大写字母
		$chars_d = $chars_b;
	}
	if ($type==3) {//数字
		$chars_d = $chars_c;
	}
	if ($type==4) {//大小写字母
		$chars_d = $chars_a.",".$chars_b;
	}
	if ($type==5) {//小写字母和数字
		$chars_d = $chars_a.",".$chars_c;
	}
	if ($type==6) {//大写字母和数字
		$chars_d = $chars_b.",".$chars_c;
	}
	$chars_data = explode(',', $chars_d);
    $charsLen = count($chars_data) - 1;
    shuffle($chars_data);    // 将数组打乱 
    $output = "";
    for ($i = 0; $i < $len; $i++) {
        $output .= $chars_data[mt_rand(0, $charsLen)];
    }
    return $output;
}

7. 过滤特殊字符

/**
 * [os_Filter 过滤特殊字符]
 * @param  [type] $str [需要过滤的字符]
 * @return [type]      [description]
 */
function os_Filter($str) {     
    if($str){
        $name = $str;
        $name = preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $name);
        $name = preg_replace('/xE0[x80-x9F][x80-xBF]‘.‘|xED[xA0-xBF][x80-xBF]/S','?', $name);
        $return = json_decode(preg_replace("#(\\\ud[0-9a-f]{3})#ie","",json_encode($name)));
        if(!$return){
            return $this->jsonName($return);
        }
    }else{
        $return = '';
    }    
    return $return;
}

8. 处理Emoji数据

/**
 * [os_Emoji 处理Emoji数据]
 * @param  [type]  $str  [description]
 * @param  integer $type [类型. 0转为HTML | 1转为emoji码]
 * @return [type]        [description]
 */
function os_Emoji($str, $type = 1){
    if ($type == 0) {
        $str = (str_replace('\\', '|', json_encode($str)));
    } else {
        $txt = json_decode(str_replace('|', '\\', $str));
        if ($txt !== null) {
            $str = $txt;
        } else {
            $str = '未知';
        }
    }
    return $str;
}

9. 数据转数组

/**
 * [os_JsonArray 数据转数组]
 * 将数据先转换成json,然后转成array
 * @param  [type] $result [需要转的数据]
 * @return [type]         [description]
 */
function os_JsonArray($result)
{
    $result_json=json_encode($result);
    return json_decode($result_json,true);
}

10. 获取文件名后缀

/**
 * [os_FileSuffix 获取文件名后缀]
 * @param  [type] $fileName [文件名]
 * @return [type]           [description]
 */
function os_FileSuffix($fileName) {
    return strtolower(pathinfo($fileName,  PATHINFO_EXTENSION));
}

11. 格式化字节大小

/**
 * [os_Bytes 格式化字节大小]
 * @param  [type] $size      [字节数]
 * @param  string $delimiter [数字和单位分隔符]
 * @return [type]            [格式化后的带单位的大小]
 */
function os_Bytes($size, $delimiter = '') {
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
    for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
    return round($size, 2) . $delimiter . $units[$i];
}

12. 将电子邮件地址转为字符实体

/**
 * [os_EncodeEmail 将电子邮件地址转为字符实体]
 * 以防止被垃圾邮件程序收集
 * @param  string $email    [电子邮件地址]
 * @param  string $linkText [description]
 * @param  string $attrs    [description]
 * @return [type]           [description]
 */
function os_EncodeEmail($email='kf@tcwlxx.com', $linkText='Contact Us', $attrs ='class="emailencoder"' ){
    $email = str_replace('@', '@', $email);
    $email = str_replace('.', '.', $email);
    $email = str_split($email, 5);
    $linkText = str_replace('@', '@', $linkText);
    $linkText = str_replace('.', '.', $linkText);
    $linkText = str_split($linkText, 5);
    $part1 = '<、a href="ma';
    $part2 = 'ilto:';
    $part3 = '" '. $attrs .' >';
    $part4 = '<、/a>';
    $encoded = '<、script type="text/javascript">';
    $encoded .= "document.write('$part1');";
    $encoded .= "document.write('$part2');";
    foreach($email as $e){
        $encoded .= "document.write('$e');";
    }
    $encoded .= "document.write('$part3');";
    foreach($linkText as $l)
    {
        $encoded .= "document.write('$l');";
    }
    $encoded .= "document.write('$part4');";
    $encoded .= '<、/script>';
    return $encoded;
}

13. 验证邮件地址

/**
 * [os_ValidEmail 验证邮件地址]
 * 除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录
 * @param  [type]  $email   [电子邮箱地址]
 * @param  boolean $test_mx [是否检查]
 * @return [type]           [description]
 */
function os_ValidEmail($email, $test_mx = false){
    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)){
        if($test_mx){
            list($username, $domain) = split("@", $email);
            return getmxrr($domain, $mxrecords);
        }else{
            return true;
        }
    }else{
   		return false;
    }
}

14. 友好的日志缩略名

/**
 * [os_CreateSlug 友好的日志缩略名]
 * @param  [type] $string [description]
 * @return [type]         [description]
 */
function os_CreateSlug($string){
   	return preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
}

15. 根据生日计算年龄

/**
 * [os_Age 根据生日计算年龄]
 * @param  [type] $date [description]
 * @return [type]       [description]
 */
function os_Age($date) {
    $year_diff = '';
    $time = strtotime($date);
    if ( false === $time ) {
        return '';
    }
    $date = date('Y-m-d', $time);
    list($year, $month, $day) = explode('-', $date);
    $year_diff = date('Y') - $year;
    $month_diff = date('m') - $month;
    $day_diff = date('d') - $day;
    if ( $day_diff < 0 || $month_diff < 0 ) {
        $year_diff--;
    }
    return $year_diff;
}

16. 防止SQL注入

/**
 * [os_SqlCheck 防止SQL注入]
 * @param  [type] $sql_str [description]
 * @return [type]          [description]
 */
function os_SqlCheck($sql_str) {  
    $check = preg_match('/select|insert|update|delete|or|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/', $sql_str); 
    if ($check) { 
        echo '非法字符!!'; 
        exit; 
    } else { 
        return $sql_str; 
    } 
}

 


说明:部分函数是从网上拷贝后,放在我的库里的,并非由我原创。

感谢那些大佬的分享和奉献。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值