一些经常用的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函数方法》
测试