您的位置:晶晶的博客>PHP>分享一些常用的PHP函数方法

分享一些常用的PHP函数方法

一些经常用的PHP基本函数,各函数功能和用法在代码中已有详细说明;没啥技术含量,除了要求PHP版本至少为PHP5.3.0及其以上外,其他的就不多说了。

<?php
/**
* 判断参数字符串是否为密码格式(必须包含数字、字母的6至18位密码串)
* @param $password 需要被判断的字符串
* @return boolean
*/
function is_password($password) {
    if(strlen($password)>18 || strlen($password)<6) {return false;}
    return (preg_match('/\d{1,16}/',$password)===1 && preg_match('/[a-zA-Z]{1,16}/',$password)===1 && strlen($password)<=16);
}
/**
* 判断参数字符串是否为邮箱格式
* @param $mail 需要被判断的字符串
* @return boolean
*/
function is_mail($mail) {
    return preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$mail)===1;
}
/**
* 判断参数字符串是否为天朝手机号
* @param $phone 需要被判断的字符串或数字
* @return boolean
*/
function is_phone($phone) {
    return preg_match('/^13[\d]{9}$|14^[0-9]\d{8}|^15[0-9]\d{8}$|^18[0-9]\d{8}$|^170\d{8}$/',$phone)===1;
}
/**
* 判断参数字符串是否为数字账号[discuz、phpwind、qq、小米等数字账号格式判断] 4至11位的正整数
* @param $uid 需要被判断的字符串或数字
* @return boolean
*/
function is_uid($uid) {
    //is_numeric ctype_digit的参数必须是字符串格式的数字才会返回true
    //不用正则的判断方法 return strlen($uid)>=4 && strlen($uid)<=11 && ctype_digit((string)$uid); 
    return preg_match('/^[1-9]\d{3,10}$/',$uid)===1;
}
/**
* 判断参数字符串是否为天朝身份证号
* @param $uid 需要被判断的字符串或数字
* @return mixed false 或 array[有内容的array boolean为真]
*/
function is_id_card($id) {
    return is_citizen_id($id);
}
function is_citizen_id($id) {
    //长度效验  18位身份证中的X为大写
    $id  = strtoupper($id);
    if(!(preg_match('/^\d{17}(\d|X)$/',$id) || preg_match('/^\d{15}$/',$id))) {
      return false;
    }
    //15位老号码转换为18位 并转换成字符串
    $Wi          = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1); 
    $Ai          = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
    $cardNoSum   = 0;
    if(strlen($id)==16) {
        $id        = substr(0, 6).'19'.substr(6, 9); 
        for($i = 0; $i < 17; $i++) {
          $cardNoSum += substr($id,$i,1) * $Wi[$i];
        }  
        $seq       = $cardNoSum % 11; 
        $id        = $id.$Ai[$seq];
    }
    //效验18位身份证最后一位字符的合法性
    $cardNoSum   = 0;
    $id17        = substr($id,0,17);
    $lastString  = substr($id,17,1);
    for($i = 0; $i < 17; $i++) {
        $cardNoSum += substr($id,$i,1) * $Wi[$i];
    }  
    $seq         = $cardNoSum % 11;
    $realString  = $Ai[$seq];
    if($lastString!=$realString) {return false;}
    //地域效验
    $oCity       =  array(11=>"北京",12=>"天津",13=>"河北",14=>"山西",15=>"内蒙古",21=>"辽宁",22=>"吉林",23=>"黑龙江",31=>"上海",32=>"江苏",33=>"浙江",34=>"安徽",35=>"福建",36=>"江西",37=>"山东",41=>"河南",42=>"湖北",43=>"湖南",44=>"广东",45=>"广西",46=>"海南",50=>"重庆",51=>"四川",52=>"贵州",53=>"云南",54=>"西藏",61=>"陕西",62=>"甘肃",63=>"青海",64=>"宁夏",65=>"新疆",71=>"台湾",81=>"香港",82=>"澳门",91=>"国外");
    $City        = substr($id, 0, 2);
    $BirthYear   = substr($id, 6, 4);
    $BirthMonth  = substr($id, 10, 2);
    $BirthDay    = substr($id, 12, 2);
    $Sex         = substr($id, 16,1) % 2 ;//男1 女0
    //$Sexcn       = $Sex?'男':'女';
    //地域验证
    if(is_null($oCity[$City])) {return false;}
    //出生日期效验
    if($BirthYear>2078 || $BirthYear<1900) {return false;}
    $RealDate    = strtotime($BirthYear.'-'.$BirthMonth.'-'.$BirthDay);
    if(date('Y',$RealDate)!=$BirthYear || date('m',$RealDate)!=$BirthMonth || date('d',$RealDate)!=$BirthDay) {
        return false;
    }
    return array('id'=>$id,'location'=>$oCity[$City],'Y'=>$BirthYear,'m'=>$BirthMonth,'d'=>$BirthDay,'sex'=>$Sex);
}
/**
* 将指定时间戳转换为截止当前的xx时间前的格式  例如 return '3分钟前''
* @param view
* @return string
*/
function get_views($view) {
    if($view>=10000) {
        $view = (ceil($view/10000)).'万次';
    }else if($view>=1000) {
        $view = (ceil($view/1000)).'千次';
    }
    return $view;
}
/**
* 将指定时间戳转换为截止当前的xx时间前的格式  例如 return '3分钟前''
* @param string|int $timestamp unix时间戳
* @return string
*/
function time_ago($timestamp) {
    $etime = time() - $timestamp;
    if ($etime < 1) return '刚刚';     
    $interval = array (         
      12 * 30 * 24 * 60 * 60  =>  '年前 ('.date('Y-m-d', $timestamp).')',
      30 * 24 * 60 * 60       =>  '个月前 ('.date('m-d', $timestamp).')',
      7 * 24 * 60 * 60        =>  '周前 ('.date('m-d', $timestamp).')',
      24 * 60 * 60            =>  '天前',
      60 * 60                 =>  '小时前',
      60                      =>  '分钟前',
      1                       =>  '秒前'
    );
    foreach ($interval as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . $str;
        }
    };
}
/**
* 格式化字节大小
* @param  number $size      字节数
* @param  string $delimiter 数字和单位分隔符
* @return string            格式化后的带单位的大小
* @author 
*/
function format_bytes($size, $delimiter = '') {
  $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
  for ($i = 0; $size >= 1024 && $i < 6; $i++) $size /= 1024;
  return round($size, 2) . $delimiter . $units[$i];
}
转载请注明本文标题和链接:《分享一些常用的PHP函数方法

相关推荐

网友评论1

路人甲 表情
Ctrl+Enter快速提交
  1. #1

    测试

    qeet 1年前 (2016-01-17) 回复