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

墨辰丷
Libérer: 2023-03-27 15:42:02
original
1692 Les gens l'ont consulté

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;
  }
}
Copier après la connexion

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

<?php
$ipStr = Tool::getIpCity(&#39;112.65.102.16&#39;);
print_r($ipStr);
Copier après la connexion

Retour des résultats

Array ( [country] => 中国 [province] => 上海 [city] => 上海 )
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal