>  기사  >  php教程  >  微信公众平台开发实例 PHP开发 代码挂载SAE平台(六)星座物语 php解析xml文件

微信公众平台开发实例 PHP开发 代码挂载SAE平台(六)星座物语 php解析xml文件

WBOY
WBOY원래의
2016-06-21 08:48:461187검색

今天带来的是查询每日星座运势的功能,这个功能非常简单,在微信平台上输入星座名称加一个标识符(例如“+”号),后台程序匹配这个标识符调用相应的功能。

 

具体流程上:1.使用字符串分割函数explode(w3school)获取到星座名称。

 

2.将星座名称匹配成相应的星座编号。

 

3.将这个编号传递给相应的API。

 

4.接收API返回的xml格式的数据。

 

5.处理xml格式的数据。

 

6.生成结果。

 

其中我再制作过程中由于是初学者,在第五步费了些功夫。API返回的xml格式为

 

[html]  

 

     

       

综合运势  

        3  

         

     

     

       

爱情运势  

        3  

         

     

     

       

工作状况  

        2  

         

     

      ……  

    2013-11-16  

 

 

 

首先我使用file_get_contents() 函数把API返回的数据文件读入一个字符串中。然后用simplexml_load_string() 函数把 XML 字符串载入对象中。然后再使用这个对象读取每个xml标签中的数据,但这里我遇到了一个问题,返回的xml格式的文件都是

[html] 

 

           

……  

           ……  

           ……  

 

 

这种格式,这样我使用“对象”->item->title的方法只能读取到第一个item的数据,这里我最终使用的办法的使用

[php]  

foreach ($xml->item as $th) {  

  

           $content_title[$i] = $th->title;  

           $content_rank[$i] = $th->rank;  

           $content_value[$i] = $th->value;  

           $i++;  

       }  

 

对这个对象“$xml”实现遍历,并使用一个自增变量i把每一组的数据存储在数组中。

其中的foreach 语句用于循环遍历数组。

 

每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) - 以此类推。

语法

[php]  

foreach (array as value)  

{  

    code to be executed;  

}  

 

例子

下面的例子示范了一个循环,这个循环可以输出给定数组的值:

[php]  

 

 

  

$arr=array("one", "two", "three");  

  

foreach ($arr as $value)  

{  

  echo "Value: " . $value . "
";  

}  

?>  

  

 

 

 

 

程序源代码如下:

 

[php]  

function xingzuo($keyword) {  

    if (make_xingzuo($keyword)) {  

        $keyword = make_xingzuo($keyword);  

        $qurl = 'http://api.uihoo.com/astro/astro.http.php?fun=day&id=' . $keyword . '&format=xml';  

        $content = file_get_contents($qurl);  

        $xml = simplexml_load_string($content);  

        $i = 0;  

        foreach ($xml->item as $th) {  

  

            $content_title[$i] = $th->title;  

            $content_rank[$i] = $th->rank;  

            $content_value[$i] = $th->value;  

            $i++;  

        }  

  

        return "星座运势:\n综合运势:" . $content_rank[0] . "颗星\n爱情运势:" . $content_rank[1] . "颗星\n学习状态:" . $content_rank[2] . "颗星\n理财运势:" . $content_rank[3] . "颗星\n健康指数:" . $content_value[4] . "\n幸运颜色:" . $content_value[6] . "\n幸运数字:" . $content_value[7] . "\n速配星座:" . $content_value[8] . "\n综合概述:" . $content_value[9];  

    }  

    else  

        return "输入的星座小编不认识哎>_

}  

  

function make_xingzuo($keyword){  

    $arr = array('白羊座' => '0','金牛座' => '1','双子座' => '2','巨蟹座' => '3','狮子座' => '4','处女座' => '5','天秤座' => '6','天平座' => '6','天蝎座' => '7','射手座' => '8','摩羯座' => '9','水瓶座' => '10','双鱼座' => '11');  

    if(strtr($keyword, $arr)0){  

        return strtr($keyword, $arr);  

    }  

 else {  

       return false;   

    }  

      

      

}  

 



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