新浪天气接口XML处理方式,最终转成数组使用代码

<?php
//强制页面UTF-8编码
//header("Content-Type: text/html;charset=UTF-8");
$local = trim($_GET["city"]);
//根据不同的浏览器,返回不同的urlencode编码
if (strpos($_SERVER["HTTP_USER_AGENT"], "MSIE"))
    //IE系列无需强制转码成GB2312后再编码,否则会在每个编码中间产生%00的垃圾数据,导至无法使用
    {
    echo "Internet Explorer" . "<br><br>";
    echo urlencode($local) . "<br><br>";
    $ct = urlencode($local);
} else { //其它浏览器需先强制mb_convert_encoding转码成GB2312后再编码
    echo "Non Internet Explorer" . "<br><br>";
    echo urlencode(mb_convert_encoding($local, "gb2312", "UTF-8")) . "<br><br>";
    $ct = urlencode(mb_convert_encoding($local, "gb2312", "UTF-8"));
}
//将要访问的新浪天气接口
$url = "http://php.weather.sina.com.cn/xml.php?city=" . $ct .
    "&password=DJOYnieT8234jlsK&day=0";
//开始获得天气数据
$html = file_get_contents($url);
//echo $html;
$xml = simplexml_load_string($html);
//var_dump($xml);   //查看现对象内容
//echo "<br><br>";
//将XML内容先转成JSON再转成ARRAY的数组内容
$xml = json_decode(json_encode($xml), true);


//print_r($xml);    //整理XML数据
//echo "<br><br>";


//数据使用方法
if (count($xml, 1) <= 1) {
    //不知道为啥开头已经是UTF-8编码了,但这里直接显示中文就是乱码,实际是GB2312的,所以强制转了下
//找到原因了,将该文件的编码格式改为UTF-8保存就可以了
    //echo mb_convert_encoding("城市名称写的不对,或无该城市天气", "UTF-8", "gb2312");
echo "城市名称写的不对,或无该城市天气";
    echo "<br><br>";
    echo count($xml, 1);
} else {
//使用数组中的内容
    echo trim($xml['Weather']['city'])."<br><br>";
    var_dump($xml);
    echo "<br><br>";
    echo count($xml, 1);
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值