努力并不能证明你比别人优秀,坚持不懈的努力才能让你不落后。

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

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

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

  1. <?php
  2. /**
  3. * 判断参数字符串是否为密码格式(必须包含数字、字母的6至18位密码串)
  4. * @param $password 需要被判断的字符串
  5. * @return boolean
  6. */
  7. function is_password($password) {
  8. if(strlen($password)>18 || strlen($password)<6) {return false;}
  9. return (preg_match('/\d{1,16}/',$password)===1 && preg_match('/[a-zA-Z]{1,16}/',$password)===1 && strlen($password)<=16);
  10. }
  11. /**
  12. * 判断参数字符串是否为邮箱格式
  13. * @param $mail 需要被判断的字符串
  14. * @return boolean
  15. */
  16. function is_mail($mail) {
  17. return preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$mail)===1;
  18. }
  19. /**
  20. * 判断参数字符串是否为天朝手机号
  21. * @param $phone 需要被判断的字符串或数字
  22. * @return boolean
  23. */
  24. function is_phone($phone) {
  25. 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;
  26. }
  27. /**
  28. * 判断参数字符串是否为数字账号[discuz、phpwind、qq、小米等数字账号格式判断] 4至11位的正整数
  29. * @param $uid 需要被判断的字符串或数字
  30. * @return boolean
  31. */
  32. function is_uid($uid) {
  33. //is_numeric ctype_digit的参数必须是字符串格式的数字才会返回true
  34. //不用正则的判断方法 return strlen($uid)>=4 && strlen($uid)<=11 && ctype_digit((string)$uid);
  35. return preg_match('/^[1-9]\d{3,10}$/',$uid)===1;
  36. }
  37. /**
  38. * 判断参数字符串是否为天朝身份证号
  39. * @param $uid 需要被判断的字符串或数字
  40. * @return mixed false 或 array[有内容的array boolean为真]
  41. */
  42. function is_id_card($id) {
  43. return is_citizen_id($id);
  44. }
  45. function is_citizen_id($id) {
  46. //长度效验 18位身份证中的X为大写
  47. $id = strtoupper($id);
  48. if(!(preg_match('/^\d{17}(\d|X)$/',$id) || preg_match('/^\d{15}$/',$id))) {
  49. return false;
  50. }
  51. //15位老号码转换为18位 并转换成字符串
  52. $Wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
  53. $Ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  54. $cardNoSum = 0;
  55. if(strlen($id)==16) {
  56. $id = substr(0, 6).'19'.substr(6, 9);
  57. for($i = 0; $i < 17; $i++) {
  58. $cardNoSum += substr($id,$i,1) * $Wi[$i];
  59. }
  60. $seq = $cardNoSum % 11;
  61. $id = $id.$Ai[$seq];
  62. }
  63. //效验18位身份证最后一位字符的合法性
  64. $cardNoSum = 0;
  65. $id17 = substr($id,0,17);
  66. $lastString = substr($id,17,1);
  67. for($i = 0; $i < 17; $i++) {
  68. $cardNoSum += substr($id,$i,1) * $Wi[$i];
  69. }
  70. $seq = $cardNoSum % 11;
  71. $realString = $Ai[$seq];
  72. if($lastString!=$realString) {return false;}
  73. //地域效验
  74. $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=>"国外");
  75. $City = substr($id, 0, 2);
  76. $BirthYear = substr($id, 6, 4);
  77. $BirthMonth = substr($id, 10, 2);
  78. $BirthDay = substr($id, 12, 2);
  79. $Sex = substr($id, 16,1) % 2 ;//男1 女0
  80. //$Sexcn = $Sex?'男':'女';
  81. //地域验证
  82. if(is_null($oCity[$City])) {return false;}
  83. //出生日期效验
  84. if($BirthYear>2078 || $BirthYear<1900) {return false;}
  85. $RealDate = strtotime($BirthYear.'-'.$BirthMonth.'-'.$BirthDay);
  86. if(date('Y',$RealDate)!=$BirthYear || date('m',$RealDate)!=$BirthMonth || date('d',$RealDate)!=$BirthDay) {
  87. return false;
  88. }
  89. return array('id'=>$id,'location'=>$oCity[$City],'Y'=>$BirthYear,'m'=>$BirthMonth,'d'=>$BirthDay,'sex'=>$Sex);
  90. }
  91. /**
  92. * 将指定时间戳转换为截止当前的xx时间前的格式 例如 return '3分钟前''
  93. * @param view
  94. * @return string
  95. */
  96. function get_views($view) {
  97. if($view>=10000) {
  98. $view = (ceil($view/10000)).'万次';
  99. }else if($view>=1000) {
  100. $view = (ceil($view/1000)).'千次';
  101. }
  102. return $view;
  103. }
  104. /**
  105. * 将指定时间戳转换为截止当前的xx时间前的格式 例如 return '3分钟前''
  106. * @param string|int $timestamp unix时间戳
  107. * @return string
  108. */
  109. function time_ago($timestamp) {
  110. $etime = time() - $timestamp;
  111. if ($etime < 1) return '刚刚';
  112. $interval = array (
  113. 12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $timestamp).')',
  114. 30 * 24 * 60 * 60 => '个月前 ('.date('m-d', $timestamp).')',
  115. 7 * 24 * 60 * 60 => '周前 ('.date('m-d', $timestamp).')',
  116. 24 * 60 * 60 => '天前',
  117. 60 * 60 => '小时前',
  118. 60 => '分钟前',
  119. 1 => '秒前'
  120. );
  121. foreach ($interval as $secs => $str) {
  122. $d = $etime / $secs;
  123. if ($d >= 1) {
  124. $r = round($d);
  125. return $r . $str;
  126. }
  127. };
  128. }
  129. /**
  130. * 格式化字节大小
  131. * @param number $size 字节数
  132. * @param string $delimiter 数字和单位分隔符
  133. * @return string 格式化后的带单位的大小
  134. * @author
  135. */
  136. function format_bytes($size, $delimiter = '') {
  137. $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
  138. for ($i = 0; $size >= 1024 && $i < 6; $i++) $size /= 1024;
  139. return round($size, 2) . $delimiter . $units[$i];
  140. }
转载请注明本文标题和链接:《分享一些常用的PHP函数方法

相关推荐

哟嚯,本文评论功能关闭啦~

  1. #1

    测试

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