Home  >  Article  >  Backend Development  >  PHP implements method of obtaining detailed IP address based on Sina IP library

PHP implements method of obtaining detailed IP address based on Sina IP library

墨辰丷
墨辰丷Original
2018-05-23 10:52:491669browse

This article mainly introduces the method of PHP to obtain IP detailed address based on Sina IP library, involving PHP regular, curl and coding conversion related operation skills. Friends in need can refer to the following

The details are as follows:

<?php
class Tool{
  /**
   * 获取IP的归属地( 新浪IP库 )
   *
   * @param $ip String    IP地址:112.65.102.16
   * @return Array
   */
  static public function getIpCity($ip)
  {
    $ip = preg_replace("/\s/","",preg_replace("/\r\n/","",$ip));
    $link = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=".$ip."&t=".time();
    $ipJson = self::httpCurl($link);
    preg_match("/\"country\":\"(.*)\"/Uis",$ipJson, $match1);
    preg_match("/\"province\":\"(.*)\"/Uis",$ipJson, $match2);
    preg_match("/\"city\":\"(.*)\"/Uis",$ipJson, $match3);
    return array(
      &#39;country&#39;=>self::ucode2zh($match1[1]), // 国家
      &#39;province&#39;=>self::ucode2zh($match2[1]), // 省
      &#39;city&#39;=>self::ucode2zh($match3[1])   // 城市
    );
  }
  /**
   * Curl方式获取信息
   */
  static public function httpCurl($url)
  {
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl_handle, CURLOPT_FAILONERROR,1);
    $file_content = curl_exec($curl_handle);
    curl_close($curl_handle);
    return $file_content;
  }
  /**
   * 将unicode编码转化为中文,转化失败返回原字符串
   *
   * @param $code String   unicode编码
   * @return String
   */
  static public function ucode2zh($code)
  {
    $temp = explode(&#39;\u&#39;,$code);
    $rslt = array();
    array_shift($temp);
    foreach($temp as $k => $v)
    {
      $v = hexdec($v);
      $rslt[] = &#39;&#39; . $v . &#39;;&#39;;
    }
    $r = implode(&#39;&#39;,$rslt);
    return empty($r) ? $code : $r;
  }
}

Get IP address class usage example

<?php
$ipStr = Tool::getIpCity(&#39;112.65.102.16&#39;);
print_r($ipStr);

Return results

Array ( [country] => 中国 [province] => 上海 [city] => 上海 )

The above is the entire content of this article, I hope it will be helpful to everyone's study.


Related recommendations:

PHP Example code for strstr function to determine whether a string exists_php basics

php simple method of backing up and restoring MySql_php skills

PHP is based on ts and nts version - Detailed explanation of the difference between vc6 and vc9 compiled versions_php basics

The above is the detailed content of PHP implements method of obtaining detailed IP address based on Sina IP library. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn