1 <?php 2 // +---------------------------------------------------------------------- 3 // | ThinkPHP [ WE CAN DO IT JUST THINK ] 4 // +---------------------------------------------------------------------- 5 // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved. 6 // +---------------------------------------------------------------------- 7 // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) 8 // +---------------------------------------------------------------------- 9 // | Author: 流年 <liu21st@gmail.com> 10 // +----------------------------------------------------------------------
11 12 /*********************** 自定义并使用 *************************************/ 13 // 获取当前域名 14 function cur_domain() 15 { 16 $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; 17 $domain=$protocol.$_SERVER['HTTP_HOST']; 18 return $domain; 19 } 20 21 // 循环添加域名 22 function for_add_domain($list,$fields=[],$object=true) 23 { 24 if(empty($list)) 25 { 26 return $list; 27 } 28 $domain=cur_domain(); 29 if(is_array($list) && $list) 30 { 31 foreach ($list as $k => &$v) { 32 if(gettype($v)=='object') 33 { 34 if($object) 35 { 36 $v=$v->getdata(); 37 } 38 } 39 if(is_array($v) && $fields) 40 { 41 foreach ($fields as $key => $field) { 42 if($field!='' && isset($v[$field]) && $v[$field]!='' && is_httporhttps($v[$field])) 43 { 44 $v[$field]=$domain.$v[$field]; 45 } 46 } 47 }else if(is_string($v) && $v!='' && is_httporhttps($v)){ 48 $v=$domain.$v; 49 } 50 51 } 52 }else{ 53 if(gettype($list)=='object') 54 { 55 if($object) 56 { 57 $list=$list->getdata(); 58 } 59 } 60 61 if(is_array($list) && $fields) 62 { 63 foreach ($fields as $key => $field) { 64 if($field!='' && isset($list[$field]) && $list[$field]!='' && is_httporhttps($list[$field])) 65 { 66 $list[$field]=$domain.$list[$field]; 67 } 68 } 69 }else if(is_string($list) && $list!='' && is_httporhttps($list)){ 70 $list=$domain.$list; 71 } 72 } 73 // var_dump($list); 74 75 return $list; 76 77 } 78 79 //true:不是 false:是 80 function is_httporhttps($field) 81 { 82 $return=false; 83 if($field!='' && !preg_match('/(http:\/\/)|(https:\/\/)/i', $field)) 84 { 85 $return=true; 86 } 87 return $return; 88 } 89 90 //过滤emoji 表情 91 function filter_Emoji($str) 92 { 93 $str = preg_replace_callback( //执行一个正则表达式搜索并且使用一个回调进行替换 94 '/./u', 95 function (array $match) { 96 return strlen($match[0]) >= 4 ? '' : $match[0]; 97 }, 98 $str); 99 100 return $str; 101 } 102 103 104 105 106 function intToChr($index, $start = 65) { 107 $str = ''; 108 if (floor($index / 26) > 0) { 109 $str .= intToChr(floor($index / 26)-1); 110 } 111 return $str . chr($index % 26 + $start); 112 } 113 114 /** 115 * 获取最近七天所有日期 116 */ 117 function get_weeks($time = '', $format='Y.n.j'){ 118 $time = $time != '' ? $time : time(); 119 //组合数据 120 $date = []; 121 for ($i=0; $i<7; $i++){ 122 $d=date($format ,strtotime( '+' . $i .' day', $time)); 123 $date[$i] = explode('.',$d); 124 // $date[$i] = $d; 125 } 126 return $date; 127 } 128 /** 129 * 指定月的开始与结束时间 130 * $cur_m 指定月 131 */ 132 function start_end_month($cur_m='') 133 { 134 $cur_m=$cur_m==''?date('m'):$cur_m; 135 136 $m = date('Y-m-d', mktime(0,0,0,$cur_m,1,date('Y'))); //指定月的开始日期 137 $t = date('t',strtotime($m)); //指定月共多少天 138 139 $start = date('Y-m-d', mktime(0,0,0,$cur_m,1,date('Y'))); //指定月的开始日期 140 $end = date('Y-m-d', mktime(0,0,0,$cur_m,$t,date('Y'))); //指定月的结束日期 141 142 $start_time=strtotime($start); 143 $end_time=strtotime($end); 144 145 return ['start_time'=>$start_time,'end_time'=>$end_time]; 146 } 147 148 //根据时间格式获取零点时间 149 function start_date($start) 150 { 151 $s=strtotime($start); 152 $y=date('Y',$s); 153 $m=date('m',$s); 154 $d=date('d',$s); 155 $time = mktime(0,0,0,$m,$d,$y); 156 return $time; 157 } 158 //根据时间格式获取午夜时间 159 function end_date($end) 160 { 161 $s=strtotime($end); 162 $y=date('Y',$s); 163 $m=date('m',$s); 164 $d=date('d',$s); 165 $time = mktime(0,0,0,$m,$d+1,$y); 166 return $time; 167 } 168 169 // 转化键值 170 function reD_val($data,$k='id',$v='') 171 { 172 $newdata=[]; 173 if($data) 174 { 175 foreach($data as $key => &$val) 176 { 177 if(gettype($val)=='object') 178 { 179 $val=$val->getData(); 180 } 181 if($k!='') 182 { 183 if($v=='') 184 { 185 $newdata[$val[$k]]=$val; 186 }else{ 187 $newdata[$val[$k]]=$val[$v]; 188 } 189 } 190 } 191 } 192 return $newdata; 193 } 194 // 转换键值并归类 195 function reD_arr($data,$k='id',$v='') 196 { 197 $newdata=[]; 198 if($data) 199 { 200 foreach($data as $key => $val) 201 { 202 if(gettype($val)=='object') 203 { 204 $val=$val->getData(); 205 } 206 if($v=='') 207 { 208 $newdata[$val[$k]][]=$val; 209 }else{ 210 $newdata[$val[$k]][]=$val[$v]; 211 } 212 213 } 214 } 215 return $newdata; 216 } 217 218 // 数据处理 二维数组处理 219 // function arrTwoRe($list) 220 // { 221 // if($list) 222 // { 223 // foreach ($list as $k => &$arr) { 224 // $arr=arrOneRe($arr); 225 // } 226 // } 227 // return $list; 228 // } 229 // // 数据处理 一维数组处理 230 // function arrOneRe($arr) 231 // { 232 // if(!empty($arr['addtime'])) 233 // { 234 // $arr['addtime']=date('Y-m-d H:i:s'); 235 // } 236 // return $arr; 237 // } 238 239 240 241 // 友好时间 242 function ago($timeint,$daytimeint=0) { 243 $daytimeint = $daytimeint == 0 ? time() : $daytimeint;//当前时间 或指定时间 244 $difference = $daytimeint - $timeint;//指定计算时间 245 $difference = abs( $difference ); 246 $periods = array("秒前", "分钟前", "小时前", "天前", "星期前", "月前", "年前", "十年前"); 247 $lengths = array("60","60","24","7","4.35","12","10"); 248 for( $j = 0; $difference >= $lengths[$j]; $j++ ) { 249 $difference = $difference / $lengths[$j]; 250 } 251 $difference = floor($difference); 252 $text = "$difference $periods[$j]"; 253 return $text; 254 } 255 256 /** 257 * 友好时间 258 */ 259 function timeFormat($timeInt){ 260 date_default_timezone_set("Asia/Chongqing"); 261 $dayt=''; 262 $fdate = ''; 263 if(empty($timeInt)||!is_numeric($timeInt)||!$timeInt){ 264 return ['dayt'=>$dayt,'fdate'=>$fdate]; 265 } 266 267 $d=time()-$timeInt; 268 if($d<0){ 269 return ['dayt'=>$dayt,'fdate'=>$fdate]; 270 }else{ 271 if($d<60){ 272 $dayt= date('H:i:s',$timeInt); 273 $fdate = $d.'秒前'; 274 }else{ 275 if($d<3600){ 276 $dayt= date('H:i:s',$timeInt); 277 $fdate = floor($d/60).'分钟前'; 278 }else{ 279 if($d<86400){ 280 $dayt= date('H:i:s',$timeInt); 281 $fdate = floor($d/3600).'小时前'; 282 }else{ 283 if($d<172800){//2天内 284 $dayt= date('n月j日',$timeInt); 285 $fdate = '昨天'; 286 }else{ 287 if($d<864000){//10天内 288 $dayt= date('n月j日',$timeInt); 289 $fdate = floor($d/86400).'天前'; 290 }else{ 291 if($d<31622400) 292 { 293 $dayt= date('n月j日',$timeInt); 294 $fdate = date('H:i:s',$timeInt); 295 }else{ 296 $dayt= date('Y年n月j日',$timeInt); 297 $fdate = date('H:i:s',$timeInt); 298 } 299 300 } 301 } 302 } 303 } 304 } 305 return ['dayt'=>$dayt,'fdate'=>$fdate]; 306 } 307 } 308 309 310 /*********************** 自定义并使用 end *************************************/ 311 312 313 function base64_imgup($base64img,$path='baseimg') 314 { 315 if (empty($base64img)) { 316 return ['code'=>0,'msg'=>'未上传图片']; 317 } 318 $pathArr = explode("|", $base64img); 319 $imgArr = []; 320 if (is_array($pathArr)) { 321 $imgArr = $pathArr; 322 } else { 323 $imgArr[0] = $pathArr; 324 } 325 326 $returnArr = []; 327 for ($i = 0; $i < count($imgArr); $i++) { 328 if (!preg_match('/^(data:\s*image\/(\w+);base64,)/', $imgArr[$i], $result)) { 329 continue; 330 } 331 $type = $result[2]; 332 $name = md5(date('YmdHis', time()) . rand(1000, 9999)) . '.' . $type; 333 $dirname = date('Ymd', time()); 334 $base='/upload'.'/'.$path.'/'; 335 $basePath = 'public'.$base; 336 if (!file_exists(ROOT_PATH . $basePath . $dirname)) { 337 mkdir(ROOT_PATH . $basePath . $dirname, 0777, true); 338 } 339 $savepath = ROOT_PATH . $basePath . $dirname . '/' . $name; 340 if (file_put_contents($savepath, base64_decode(str_replace($result[1], '', $imgArr[$i])))) { 341 342 $returnArr[$i] = $base . $dirname . '/' . $name; 343 } else { 344 continue; 345 } 346 } 347 return ['code'=>1,'msg'=>'success','data'=>$returnArr]; 348 } 349 350 351 /**************************** 打印与数据测试 *******************************************/ 352 // 测试信息数据表记录 353 function m_ceshilog($msg='') 354 { 355 $is_cli=IS_CLI==true?1:0; 356 $des=$msg!=''?$msg:'数据记录'; 357 $save=[ 358 'is_cli'=>$is_cli, 359 'time'=>date('Y-m-d H:i:s'), 360 'des'=>$des, 361 'ip'=>get_ip(), 362 'addtime'=>time(), 363 ]; 364 model('ceshi')->insert($save); 365 } 366 // 测试记录 367 function ceshilog($txt,$other='data',$file='./ceshilog.txt') 368 { 369 // ceshilog($json_obj,'getUserCode-111111111','./../application/index/controller/text.txt'); 370 $fp = fopen($file,'ab+'); 371 fwrite($fp,'-----------'.$other.':'.date('Y-m-d H:i:s').'-----------------'."\r\n"); 372 if(is_array($txt) || is_object($txt)) 373 { 374 fwrite($fp,var_export($txt,true)); 375 }else{ 376 if($txt=='') 377 { 378 $txt='// -------------------------------------------------------------'; 379 } 380 fwrite($fp,$txt); 381 } 382 fwrite($fp,"\r\n\r\n\r\n"); 383 fclose($fp); 384 } 385 386 /** 387 * 打印日志 388 * @param $data 389 * @param $msg 级别 390 */ 391 function FLog($data,$msg='ceshi') 392 { 393 \think\Log::record($data, $msg); 394 } 395 /**************************** 打印与数据测试 end *******************************************/ 396 397 398 399 /****************app使用函数***********************/ 400 // 获取app传入数据 401 function get_data() 402 { 403 $data = file_get_contents(('php://input')); 404 trace($data,'get_data'); 405 // echo '<pre>';var_dump($data); 406 $data = json_decode($data,TRUE); 407 // var_dump($data); 408 return (array) $data; 409 } 410 // 微信小程序 411 function wx_get_data() 412 { 413 $data=[]; 414 if(request()->isPost()) 415 { 416 $data=input('post.'); 417 } 418 return (array) $data; 419 } 420 // 获取数组值 不存在设置为空 421 function arr_getval(array $arr, $key, $default = NULL) 422 { 423 return isset($arr[$key]) ? $arr[$key] : $default; 424 } 425 // 设置token值 426 function set_token($id, $time) 427 { 428 return md5('token:'.(md5($time.'token:', $id))); 429 } 430 function json_error($msg='',$data=[]) 431 { 432 return json_msg(0,$msg,$data); 433 } 434 function json_success($msg='',$data=[]) 435 { 436 return json_msg(1,$msg,$data); 437 } 438 function json_login($msg='',$data=[]) 439 { 440 return json_msg(2,$msg,$data); 441 } 442 function json_forbid($msg='',$data=[]) 443 { 444 return json_msg(4,$msg,$data); 445 } 446 447 function json_msg($code=0,$msg='',$data=[]) 448 { 449 if($code==0) 450 { 451 $msg=($msg=='')?'操作失败':$msg; 452 }else if($code==1) 453 { 454 $msg=($msg=='')?'操作成功':$msg; 455 }else if($code==2) 456 { 457 $msg=($msg=='')?'请重新登录':$msg; 458 }else if($code==4) 459 { 460 $msg=($msg=='')?'非法进入':$msg; 461 } 462 463 // if ($data && (array_keys($data) !== range(0, count($data) - 1))) 464 // { 465 // $data = [$data]; 466 // } 467 // if ($data && is_array($data)) 468 // { 469 // trans_string($data); 470 // } 471 $json=['code' => $code, 'msg' => $msg, 'data' => $data]; 472 return json_encode($json); 473 } 474 function arr_msg($code=0,$msg='',$data=[]) 475 { 476 if($code==0) 477 { 478 $msg=($msg=='')?'操作失败':$msg; 479 }else if($code==1) 480 { 481 $msg=($msg=='')?'操作成功':$msg; 482 }else if($code==2) 483 { 484 $msg=($msg=='')?'请重新登录':$msg; 485 } 486 // if ($data && (array_keys($data) !== range(0, count($data) - 1))) 487 // { 488 // $data = [$data]; 489 // } 490 // if ($data && is_array($data)) 491 // { 492 // trans_string($data); 493 // } 494 $arr=['code' => $code, 'msg' => $msg, 'data' => $data]; 495 return $arr; 496 } 497 function trans_string(array &$arr) 498 { 499 foreach ($arr as &$one) 500 { 501 if (is_bool($one)) 502 { 503 $one = $one ? '1' : '0'; 504 } 505 if (is_array($one)) 506 { 507 $one = trans_string($one); 508 } 509 else 510 { 511 $one = strval($one); 512 } 513 } 514 515 return $arr; 516 } 517 518 519 /****************app使用函数 end***********************/ 520 521 522 523 524 /****************自定义函数***********************/ 525 526 527 528 529 // 截取字符中指定数字个数 530 function get_ppid_str($ppid_str,$num=2) 531 { 532 $D=explode(',', $ppid_str); 533 534 $count=count($D); 535 if($count<$num) 536 { 537 return $ppid_str; 538 }else{ 539 $S=[]; 540 for($j=0;$j<$num;$j++) 541 { 542 if($j<$num) 543 { 544 $S[]=$D[$j]; 545 } 546 } 547 return join(',',$S); 548 } 549 } 550 551 // 屏蔽标签 552 function deltage($data) 553 { 554 if($data) 555 { 556 foreach ($data as $k => &$v) { 557 $v=strip_tags($v); 558 } 559 } 560 return $data; 561 } 562 563 564 565 /** 566 * 将数据表数组写入指定文件 567 * 568 * @access public 569 * @param string $path 文件路径 570 * @param array $arr 要写入的数据 571 * 572 * @return boolen 573 */ 574 function put_tables_list($path, $arr,$data=[]) 575 { 576 if (is_array($arr)) 577 { 578 579 if($data) 580 { 581 $msg="/* \r\n"; 582 foreach ($data as $k1 => $v1) { 583 $msg .= $k1 . ': ' . $v1 . ";\r\n"; 584 } 585 $msg.="*/ \r\n"; 586 $str = $msg; 587 }else{ 588 $str = ''; 589 } 590 591 592 foreach($arr as $key => $val) 593 { 594 $str .= $key . ': ' . $val . ";\r\n"; 595 596 } 597 598 @file_put_contents($path, $str); 599 return ['code'=>1]; 600 } 601 else 602 { 603 return ['code'=>0,'msg'=>'It need a array']; 604 } 605 } 606 607 /** 608 * 将文件中数据表列表取出 609 * 610 * @access public 611 * @param string $path 文件路径 612 * 613 * @return array $arr 数据表列表 614 */ 615 function get_tables_list($path) 616 { 617 if (!file_exists($path)) 618 { 619 $this->error_msg = $path . ' is not exists'; 620 621 return false; 622 } 623 624 $arr = array(); 625 $str = @file_get_contents($path); 626 627 if (!empty($str)) 628 { 629 $tmp_arr = explode("\n", $str); 630 foreach ($tmp_arr as $val) 631 { 632 $val = trim ($val, "\r;"); 633 if (!empty($val)) 634 { 635 list($table, $count) = explode(':',$val); 636 $arr[$table] = $count; 637 } 638 } 639 } 640 641 return $arr; 642 } 643 644 645 646 647 648 649 650 651 652 // 获取数组值 不存在设置为空 653 function getval(array $arr, $key, $default = NULL) 654 { 655 return isset($arr[$key]) ? $arr[$key] : $default; 656 } 657 658 // json转化为数组 659 function json_to_array($p) 660 { 661 $p=getutf8($p); 662 return json_decode($p, true); 663 } 664 665 // 对字符编码进行转化 666 function getutf8($p) 667 { 668 $cur_iconv=mb_detect_encoding($p,array('ASCII','UTF-8','GB2312','GBK')); 669 if( $cur_iconv != 'UTF-8' ) 670 { 671 $p = iconv($cur_iconv,'UTF-8',$p); 672 } 673 return $p; 674 } 675 676 677 678 679 /* 680 * 获取用户真实IP地址 681 */ 682 function get_ip() 683 { 684 if(!empty($_SERVER['HTTP_CLIENT_IP'])){ 685 $cip = $_SERVER['HTTP_CLIENT_IP']; 686 } 687 else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 688 $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 689 } 690 else if(!empty($_SERVER["REMOTE_ADDR"])){ 691 $cip = $_SERVER["REMOTE_ADDR"]; 692 }else{ 693 $cip = ''; 694 } 695 preg_match("/[\d\.]{7,15}/", $cip, $cips); 696 $cip = isset($cips[0]) ? $cips[0] : 'unknown'; 697 unset($cips); 698 return $cip; 699 } 700 701 702 703 /****************网站自定义函数***********************/ 704 705 // 创建邀请码 706 function create_code($len=6) 707 { 708 $rand=''; 709 for($x=0;$x<$len;$x++){ 710 srand((double)microtime()*1000000); 711 $rand.=($rand!=''?'':'').mt_rand(0,9); 712 } 713 return $rand; 714 715 // $suffix = str_pad(substr($suffix, -4, 4), 4, chr(rand(97,122)), STR_PAD_LEFT); 716 // $suffix = ''; 717 718 // return $rand.$suffix.($flg==''?'':'_'.$flg); 719 } 720 721 // 验证字段 722 function check_fields(array $arr, $fields) 723 { 724 foreach ($fields as $field => $msg) { 725 if ( ! isset($arr[$field]) || empty($arr[$field]) && $arr[$field]!=0 ) 726 { 727 return $msg; 728 } 729 if(isset($arr[$field]) && $arr[$field]!='') 730 { 731 if($field=='mobile' && !is_mobile($arr[$field])) 732 { 733 return '手机号格式有误'; 734 } 735 } 736 } 737 return ''; 738 } 739 740 // 生成六位随机数 左补零 741 function createCode($len=6) 742 { 743 $code = (string) rand(0, 999999); 744 745 if (strlen($code) < $len) 746 { 747 $code = str_pad($code, $len, '0', STR_PAD_LEFT); 748 } 749 750 return $code; 751 } 752 753 // 获取数据库中的配置信息 754 function cc($fields='') 755 { 756 $list=model('config')->getlist(['is_use'=>0]); 757 $relist=reD_val($list,'field','val'); 758 // echo '<pre>'; 759 // var_dump($relist); 760 // die; 761 if($fields!='') 762 { 763 // 对字符进行拆分 764 $D=explode(',', $fields); 765 if(count($D)>1) 766 { 767 $R=[]; 768 foreach ($D as $k => $v) { 769 $R[$v]=$relist[$v]; 770 } 771 return $R; 772 }else{ 773 return $relist[$fields]; 774 } 775 }else{ 776 return $relist; 777 } 778 } 779 780 781 782 //删除指定值 783 function delfield_val($data,$fieldD) 784 { 785 if($fieldD) 786 { 787 foreach ($fieldD as &$field) { 788 if(isset($data[$field])) 789 { 790 unset($data[$field]); 791 } 792 793 } 794 } 795 return $data; 796 } 797 798 799 function str_imgurl($img='') 800 { 801 if($img!='' && is_httporhttps($img)) 802 { 803 $img='http://'.$_SERVER['HTTP_HOST'].$img; 804 } 805 return $img; 806 } 807 808 //获取文章的第一张图片 809 function get_html_first_imgurl($html){ 810 $pattern = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.jpeg]))[\'|\"].*?[\/]?>/"; 811 preg_match_all($pattern, $html, $matches);//正则表达式把图片的整个都获取出来了 812 // dump($matches); 813 $img_arr = $matches[0];//全部图片数组 814 $first_img_url = ""; 815 if (!empty($img_arr)) { 816 $first_img = $img_arr[0]; 817 $p="#src=('|\")(.*)('|\")#isU";//正则表达式 818 preg_match_all ($p, $first_img, $img_val); 819 if(isset($img_val[2][0])){ 820 $first_img_url = $img_val[2][0]; //获取第一张图片地址 821 } 822 } 823 return $first_img_url; 824 } 825 // 详情中的数据转化 826 function replaceImgUrl($content = '', $strUrl = '') 827 { 828 if($content=='') 829 { 830 return $content; 831 } 832 if($strUrl=='') 833 { 834 $strUrl=cur_domain(); 835 } 836 //提取图片路径的src的正则表达式 并把结果存入$matches中 837 preg_match_all("/<img(.*)src=\"([^\"]+)\"[^>]+>/isU",$content,$matches); 838 // <img src="/upload/ueditor/20200911/1599820608507775.png" title="1599820608507775.png" alt="area_adv.png"/> 839 $img = ""; 840 if(!empty($matches)) { 841 //注意,上面的正则表达式说明src的值是放在数组的第三个中 842 $img = $matches[2]; 843 }else { 844 $img = ""; 845 } 846 847 //视频 848 preg_match_all("/<video(.*)src=\"([^\"]+)\"[^>]+>/isU",$content,$matches2); 849 850 if(!empty($matches2)) { 851 //注意,上面的正则表达式说明src的值是放在数组的第三个中 852 $img2 = $matches2[2]; 853 } 854 855 $img=array_merge($img,$img2); 856 // dump($img); 857 858 859 if (!empty($img)) { 860 $patterns= array(); 861 $replacements = array(); 862 foreach($img as $imgItem){ 863 $final_imgUrl=$imgItem; 864 if(is_httporhttps($imgItem)){ 865 $final_imgUrl = $strUrl.$imgItem; 866 } 867 $replacements[] = $final_imgUrl; 868 $img_new = "/".preg_replace("/\//i","\/",$imgItem)."/"; 869 $patterns[] = $img_new; 870 } 871 872 873 //让数组按照key来排序 874 ksort($patterns); 875 ksort($replacements); 876 877 //替换内容 878 $vote_content = preg_replace($patterns, $replacements, $content); 879 return $vote_content; 880 }else { 881 return $content; 882 } 883 } 884 885 /**************************** 正则验证 ******************************/ 886 function hide_mobile($mobile) 887 { 888 $mobile = substr_replace($mobile,'****',3,4); 889 return $mobile; 890 } 891 // 判断手机号格式 892 function is_mobile($mobile) 893 { 894 // "^"匹配文本的开头,"$"匹配文本的结尾。 895 $reg="/^1[3456789]{1}\d{9}$/"; 896 if(preg_match($reg,$mobile)){ 897 return true; 898 }else{ 899 return false; 900 } 901 } 902 //验证身份证号 903 function is_iDnumber($IDCard) 904 { 905 $reg="/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; 906 if(preg_match($reg,$IDCard)){ 907 return true; 908 } else { 909 return false; 910 } 911 } 912 /** 913 * func 验证中文姓名 914 * @param $name 915 * @return bool 916 */ 917 function isChineseName($name){ 918 if (preg_match('/^([\xe4-\xe9][\x80-\xbf]{2}){2,4}$/', $name)) { 919 return true; 920 } else { 921 return false; 922 } 923 }

 文章内容截取作为描述

1 function subtext($text, $length)
2 {
3     if(mb_strlen($text, 'utf8') > $length) {
4         return mb_substr($text, 0, $length, 'utf8').'...';
5     } else {
6         return $text;
7     }
8  
9 }

 

 

 

关于laravel公共函数的创建与使用 参考 https://blog.csdn.net/qq_38117192/article/details/89457102

posted on 2020-10-07 09:52  思君邪  阅读(181)  评论(0编辑  收藏  举报