根据ip调用新浪api获取城市名并转成拼音

 更新时间:2014年03月07日 09:44:24   作者:  
这篇文章主要介绍了根据ip调用新浪api获取城市名并转成拼音的示例,,需要的朋友可以参考下

功能:

1,获取当前IP地址,
2,调用新浪API,获取到当前城市。
3,将中文转换为拼音后跳转。

复制代码 代码如下:

<?php
 include './pinyin.php';

//获取当前ip
function getIp(){
  $onlineip='';
  if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
   $onlineip=getenv('HTTP_CLIENT_IP');
  } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
   $onlineip=getenv('HTTP_X_FORWARDED_FOR');
  } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
   $onlineip=getenv('REMOTE_ADDR');
  } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
   $onlineip=$_SERVER['REMOTE_ADDR'];
  }
  return $onlineip;
 }

 //获取城市信息api
 function getLocation($ip){
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
  $str = curl_exec($curl);
  curl_close($curl);
  return $str;
 }

 //当前ip地址
 $currentIP = getIp();

 //通过当前ip获取信息
 $getLocation = getLocation($currentIP);
 $currentInfo = json_decode($getLocation, true); 

 //判断ip是否为有效
 if($currentInfo['ret'] == '-1')
 {
  $currentInfo['city'] = 'unknown';
 }

 //当前城市中文名
 $currentCityName = $currentInfo['city'];  
 $currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');

 //城市拼音多音字
 switch($currentCityEName)
 {
  case 'zhongqing':
   $currentCityEName = 'chongqing';
  break;

  case 'shenfang':
   $currentCityEName = 'shifang';
  break;

  case 'chengdou':
   $currentCityEName = 'chengdu';
  break;

  case 'yueshan':
   $currentCityEName = 'leshan';
  break;

  case 'junxian':
   $currentCityEName = 'xunxian';
  break;

  case 'shamen':
   $currentCityEName = 'xiamen';
  break;

  case 'zhangsha':
   $currentCityEName = 'changsha';
  break;

  case 'weili':
   $currentCityEName = 'yuli';
  break;

  case 'zhaoyang':
   $currentCityEName = 'chaoyang';
  break;

  case 'danxian':
   $currentCityEName = 'shanxian';
  break;

  default:
   $currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');
  break;
 }

 //重定向浏览器
 header("Location: https://www.jb51.net");
 exit;

相关文章

  • 深入解析PHP底层机制及相关原理

    深入解析PHP底层机制及相关原理

    这篇文章主要介绍了深入解析PHP底层机制及相关原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 简单示例AJAX结合PHP代码实现登录效果代码

    简单示例AJAX结合PHP代码实现登录效果代码

    比较简单的通过ajax+php实现登陆功能,这是个简单的例子,固定字符,实际应用中可以从数据库中读取
    2008-07-07
  • excellent!——ASCII Art(由目标图象生成ascii)

    excellent!——ASCII Art(由目标图象生成ascii)

    这篇文章主要介绍了excellent!——ASCII Art
    2007-02-02
  • php设计模式之命令模式使用示例

    php设计模式之命令模式使用示例

    这篇文章主要介绍了php设计模式之命令模式使用示例,命令模式将一个请求封装为一个对象,从而你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作
    2014-03-03
  • PHP添加图片水印、压缩、剪切的封装类

    PHP添加图片水印、压缩、剪切的封装类

    为了防止自己辛苦制作的作品被别人窃取,经常给作品添加水印,以此保证作品的唯一性,那么该怎么给图片添加水印呢,如果作品尺寸过大,该如何处理呢,下面小编给大家详细介绍有关PHP给图片添加水印 压缩 剪切的封装类,需要的朋友可以参考下
    2015-08-08
  • Laravel路由设定和子路由设定实例分析

    Laravel路由设定和子路由设定实例分析

    这篇文章主要介绍了Laravel路由设定和子路由设定方法,结合实例形式分析了Laravel路由的设定技巧,需要的朋友可以参考下
    2016-03-03
  • ThinkPHP5对接IOS苹果支付代码

    ThinkPHP5对接IOS苹果支付代码

    前端在调起苹果支付前,先请求到服务端,服务端先生成一条充值记录,但是状态为:未支付;然后把这个订单id发给前端,前端在支付完成的时候,会收到苹果的支付凭证,将此凭证和订单id回传给服务端,订单id的作用是用来确定是哪一笔,支付凭证是拿来校验是否支付成功
    2023-08-08
  • 详解php中的类与对象(继承)

    详解php中的类与对象(继承)

    在php中,类型的继承使用extends关键字,而且最多只能继承一个父类,php不支持多继承。这篇文章主要介绍了php中的类与对象(继承),需要的朋友可以参考下
    2017-12-12
  • thinkphp的URL路由规则与配置实例

    thinkphp的URL路由规则与配置实例

    这篇文章主要介绍了thinkphp的URL路由规则与配置方法,实例分析了ThinkPHP的路由规则及伪静态设置方法,并分析了相关的注意事项,是ThinkPHP开发中非常重要的技巧,需要的朋友可以参考下
    2014-11-11
  • 关于laravel 子查询 & join的使用

    关于laravel 子查询 & join的使用

    今天小编就为大家分享一篇关于laravel 子查询 & join的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论