博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php常用代码片段
阅读量:4294 次
发布时间:2019-05-27

本文共 6796 字,大约阅读时间需要 22 分钟。

1. 检测用户位置 

使用下面的函数,可以检测用户是在哪个城市访问你的网站

function detect_city($ip) {                          $default = 'UNKNOWN';                   $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';                          $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);        $ch = curl_init();                          $curl_opt = array(            CURLOPT_FOLLOWLOCATION  => 1,            CURLOPT_HEADER      => 0,            CURLOPT_RETURNTRANSFER  => 1,            CURLOPT_USERAGENT   => $curlopt_useragent,            CURLOPT_URL       => $url,            CURLOPT_TIMEOUT         => 1,            CURLOPT_REFERER         => 'http://' . $_SERVER['HTTP_HOST'],        );                          curl_setopt_array($ch, $curl_opt);                          $content = curl_exec($ch);                          if (!is_null($curl_info)) {            $curl_info = curl_getinfo($ch);        }                          curl_close($ch);                          if ( preg_match('{
  • City : ([^<]*)
  • }i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match('{
  • State/Province : ([^<]*)
  • }i', $content, $regs) ) { $state = $regs[1]; } if( $city!='' && $state!='' ){ $location = $city . ', ' . $state; return $location; }else{ return $default; } }
    // 调用

    2.获取 Web 页面的源代码 

    使用下面的函数,可以获取任意 Web 页面的 HTML 代码 

    function display_sourcecode($url){$lines = file($url);$output = "";foreach ($lines as $line_num => $line) {     // loop thru each line and prepend line numbers    $output.= "Line #{$line_num} : " . htmlspecialchars($line) . "\n";}}

    3.验证邮箱地址 

    有时候,当在网站填写表单,用户可能会输入错误的邮箱地址,这个函数可以验证邮箱地址是否有效。

    function is_validemail($email){$check = 0;if(filter_var($email,FILTER_VALIDATE_EMAIL)){$check = 1;}return $check;}
    调用语法:

    4.转发数量 

    使用这个 PHP 片段可以检测你的页面 URL 有多少转发数量 

    function tweetCount($url) {    $content = file_get_contents("http://api.tweetmeme.com/url_info?url=".$url);    $element = new SimpleXmlElement($content);    $retweets = $element->story->url_count;    if($retweets){        return $retweets;    } else {        return 0;    }}
    调用语法:

    5.根据 URL 下载图片

    function imagefromURL($image,$rename){$ch = curl_init($image);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);$rawdata=curl_exec ($ch);curl_close ($ch);$fp = fopen("$rename",'w');fwrite($fp, $rawdata); fclose($fp);}

    6.身份证号码的正则验证

    //=============新的18位身份证号码各位的含义:=======================//1-2位省、自治区、直辖市代码;11-65//3-4位地级市、盟、自治州代码;//5-6位县、县级市、区代码;//7-14位出生年月日,比如19970401代表1997年4月1日;//15-17位为顺序号,其中17位男为单数,女为双数;//18位为校验码,0-9和X,由公式随机产生。//举例://412723 19970401 0012这个身份证号的含义: 41为河南,27为周口,23为商水县,出生日期为1997年4月1日,顺序号为001,2为验证码//===========15位身份证号码各位的含义:=======================//1-2位省、自治区、直辖市代码;//3-4位地级市、盟、自治州代码;//5-6位县、县级市、区代码;//7-12位出生年月日,比如970401代表1997年4月1日,这是和18位号码的第一个区别;//13-15位为顺序号,其中15位男为单数,女为双数;//与18位身份证号的第二个区别:没有最后一位的验证码。//举例://412723 970401 001的含义; 41为河南,27为周口,23为商水县,出生日期为1997年4月1日,顺序号为001。  // $num为身份证号码,$checkSex(性别):1为男,2为女,不输入为不验证 public function checkIdentity($num, $checkSex = '') { // 不是15位或不是18位都是无效身份证号 if (strlen($num) != 15 && strlen($num) != 18) {      return false; }   // 是数值  if (is_numeric($num)) {  // 如果是15位身份证号  if (strlen($num) == 15) {  // 省市县(6位)  $areaNum = substr($num, 0, 6);  // 出生年月(6位)  $dateNum = substr($num, 6, 6);  // 性别(3位)  $sexNum = substr($num, 12, 3);  } else {  // 如果是18位身份证号  // 省市县(6位)  $areaNum = substr($num, 0, 6);  // 出生年月(8位)  $dateNum = substr($num, 6, 8);  // 性别(3位)  $sexNum = substr($num, 14, 3);  // 校验码(1位)  $endNum = substr($num, 17, 1);  } } else {  // 不是数值  if (strlen($num) == 15) {  return false;  } else {  //验证前17位为数值,且18位为字符x  $check17 = substr($num, 0, 17);  if (!is_numeric($check17)) {   return false;  }  //省市县(6位)  $areaNum = substr($num, 0, 6);  // 出生年月(8位)  $dateNum = substr($num, 6, 8);  // 性别(3位)  $sexNum = substr($num, 14, 3);  // 校验码(1位)  $endNum = substr($num, 17, 1);  if ($endNum != 'x' && $endNum != 'X') {   return false;  }  } } //验证地区 if (isset($areaNum)) {  if (!$this->checkArea($areaNum)) {  return false;  } } //验证日期 if (isset($dateNum)) {  if (!$this->checkDate($dateNum)) {  return false;  } } // 性别1为男,2为女 if ($checkSex == 1) {  if (isset($sexNum)) {  if (!$this->checkSex($sexNum)) {   return false;  }  } } elseif ($checkSex == 2) {  if (isset($sexNum)) {  if ($this->checkSex($sexNum)) {   return false;  }  } } //验证最后一位 if (isset($endNum)) {  if (!$this->checkEnd($endNum, $num)) {  return false;  } } return true; } // 验证城市 private function checkArea($area) { $num1 = substr($area, 0, 2); $num2 = substr($area, 2, 2); $num3 = substr($area, 4, 2); // 根据GB/T2260—999,省市代码11到65 if (10 < $num1 && $num1 < 66) {  return true; } else {  return false; } } // 验证出生日期 private function checkDate($date) { if (strlen($date) == 6) {  $date1 = substr($date, 0, 2);  $date2 = substr($date, 2, 2);  $date3 = substr($date, 4, 2);  $statusY = $this->checkY('19' . $date1); } else {  $date1 = substr($date, 0, 4);  $date2 = substr($date, 4, 2);  $date3 = substr($date, 6, 2);  $nowY = date("Y", time());  if (1900 < $date1 && $date1 <= $nowY) {  $statusY = $this->checkY($date1);  } else {  return false;  } } if (0 < $date2 && $date2 < 13) {  if ($date2 == 2) {  // 润年  if ($statusY) {   if (0 < $date3 && $date3 <= 29) {   return true;   } else {   return false;   }  } else {   // 平年   if (0 < $date3 && $date3 <= 28) {   return true;   } else {   return false;   }  }  } else {  $maxDateNum = $this->getDateNum($date2);  if (0 < $date3 && $date3 <= $maxDateNum) {   return true;  } else {   return false;  }  } } else {  return false; } } // 验证性别 private function checkSex($sex) { if ($sex % 2 == 0) {  return false; } else {  return true; } } // 验证18位身份证最后一位 private function checkEnd($end, $num) { $checkHou = array(1, 0, 'x', 9, 8, 7, 6, 5, 4, 3, 2); $checkGu = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); $sum = 0; for ($i = 0;$i < 17;$i++) {  $sum+= (int)$checkGu[$i] * (int)$num[$i]; } $checkHouParameter = $sum % 11; if ($checkHou[$checkHouParameter] != $num[17]) {  return false; } else {  return true; } } // 验证平年润年,参数年份,返回 true为润年 false为平年 private function checkY($Y) { if (getType($Y) == 'string') {  $Y = (int)$Y; } if ($Y % 100 == 0) {  if ($Y % 400 == 0) {  return true;  } else {  return false;  } } else if ($Y % 4 == 0) {  return true; } else {  return false; } } // 当月天数 参数月份(不包括2月) 返回天数 private function getDateNum($month) { if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12) {  return 31; } else if ($month == 2) { } else {  return 30; } }}
    调用语法: 
    checkIdentity($num); var_dump($data);?>

     

    转载地址:http://iruws.baihongyu.com/

    你可能感兴趣的文章
    一个ubuntu服务器的网络不能问题
    查看>>
    ubuntu的iptables保存和重启后自动生效的方法
    查看>>
    ubuntu的ssh登录慢
    查看>>
    用python检查网络并做数据统计
    查看>>
    读取文件行时变量的作用域 for循环和while循环的作用域
    查看>>
    nginx调优
    查看>>
    sar监控系统
    查看>>
    vmware workstation 虚拟机克隆后的网卡操作
    查看>>
    test -n/-z的注意事项
    查看>>
    centos6升级openssl1.1.0e
    查看>>
    物理卷PV 卷组VG 逻辑卷LV实战
    查看>>
    老HP服务器安装centos7认不出磁盘阵列的问题
    查看>>
    python-libs-2.6.6-66.el6_8.x86_64 is a duplicate with python-libs-2.6.6-64.el6.x86_64
    查看>>
    在线升级centos7的openssh步骤及注意事项
    查看>>
    centos7把nginx设置为自启动
    查看>>
    为了安全隐藏ssh登录版本号
    查看>>
    升级openssh后ulimit不生效的问题
    查看>>
    有图的iptables解释
    查看>>
    无法上网发邮件的centos7服务器通过可以上网的服务器发送邮件-nginx代理smtp
    查看>>
    一个openstack新增加计算节点的脚本。
    查看>>