Maison  >  Article  >  développement back-end  >  PHP implémente une méthode d'obtention d'une adresse IP détaillée basée sur la bibliothèque IP Sina

PHP implémente une méthode d'obtention d'une adresse IP détaillée basée sur la bibliothèque IP Sina

墨辰丷
墨辰丷original
2018-05-23 10:52:491625parcourir

Cet article présente principalement la méthode d'obtention d'une adresse IP détaillée en PHP basée sur la bibliothèque IP Sina, impliquant des compétences opérationnelles PHP régulières, curl et liées à la conversion de codage. Les amis dans le besoin peuvent se référer à

Les détails sont les suivants. suit :

<?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;
  }
}

Obtenir l'instance d'utilisation de la classe d'adresse IP

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

Retour des résultats

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

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

PHP Exemple de code pour la fonction strstr permettant de déterminer si une chaîne existe_php basics

Comment simplement sauvegarder et restaurer MySql dans les conseils php_php

PHP basé sur les versions ts et nts - Explication détaillée de la différence entre les versions compilées vc6 et vc9_php basics

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn