>  기사  >  백엔드 개발  >  PHP는 Sina IP 라이브러리를 기반으로 상세한 IP 주소를 얻는 방법을 구현합니다.

PHP는 Sina IP 라이브러리를 기반으로 상세한 IP 주소를 얻는 방법을 구현합니다.

墨辰丷
墨辰丷원래의
2018-05-23 10:52:491670검색

이 글은 주로 Sina IP 라이브러리를 기반으로 PHP에서 IP 상세 주소를 얻는 방법을 소개하며, PHP 정규, 컬 및 인코딩 변환 관련 작업 기술이 필요하면 참고할 수 있습니다.

자세한 내용은 다음과 같습니다.

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

IP 주소 클래스 사용 예시 가져오기

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

Return results

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

위 내용은 이 글의 전체 내용이므로, 모든 분들의 학습에 도움이 되기를 바랍니다.


관련 권장 사항:

PHP 문자열 존재 여부를 확인하는 strstr 함수의 예제 코드_php 기본

php MySql_php를 백업하고 복원하는 간단한 방법 팁

PHP 기반 ts 및 nts 버전 - vc6과 vc9 컴파일 버전의 차이점에 대한 자세한 설명_php 기본

위 내용은 PHP는 Sina IP 라이브러리를 기반으로 상세한 IP 주소를 얻는 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.