今天带来的是查询每日 星座 运势的功能,这个功能非常简单,在微信 平台 上输入 星座 名称加一个标识符(例如“”号),后台程序匹配这个标识符调用相应的功能。 具体流程上:1.使用字符串分割函数explode(w3school)获取到 星座 名称。 2.将 星座 名称匹配
今天带来的是查询每日星座运势的功能,这个功能非常简单,在微信平台上输入星座名称加一个标识符(例如“+”号),后台程序匹配这个标识符调用相应的功能。
具体流程上:1.使用字符串分割函数explode(w3school)获取到星座名称。
2.将星座名称匹配成相应的星座编号。
3.将这个编号传递给相应的API。
4.接收API返回的xml格式的数据。
5.处理xml格式的数据。
6.生成结果。
其中我再制作过程中由于是初学者,在第五步费了些功夫。API返回的xml格式为
<root> <item> <title>综合运势</title> <rank>3</rank> <value></value> </item> <item> <title>爱情运势</title> <rank>3</rank> <value></value> </item> <item> <title>工作状况</title> <rank>2</rank> <value></value> </item> …… <item>2013-11-16</item> </root>
<item> <title>……</title> <rank>……<rank> <value>……<value> </value></value></rank></rank></item>
foreach ($xml->item as $th) { $content_title[$i] = $th->title; $content_rank[$i] = $th->rank; $content_value[$i] = $th->value; $i++; }
其中的foreach 语句用于循环遍历数组。
每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) - 以此类推。
foreach (array as value) { code to be executed; }
下面的例子示范了一个循环,这个循环可以输出给定数组的值:
<?php $arr=array("one", "two", "three"); foreach ($arr as $value) { echo "Value: " . $value . "<br />"; } ?>
程序源代码如下:
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 "输入的星座小编不认识哎>_ '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; } }