微信公眾平台開發執行個體 PHP開發 代碼掛載SAE平台(六)星座物語 php解析xml檔案
來源:互聯網
上載者:User
今天帶來的是查詢每日星座運勢的功能,這個功能非常簡單,在微信平台上輸入星座名稱加一個標識符(例如“+”號),背景程式匹配這個標識符調用相應的功能。 具體流程上:1.使用字串分割函數explode(w3school)擷取到星座名稱。 2.將星座名稱匹配成相應的星座編號。 3.將這個編號傳遞給相應的API。 4.接收API返回的xml格式的資料。 5.處理xml格式的資料。 6.產生結果。 其中我再製作過程中由於是初學者,在第五步費了些功夫。API返回的xml格式為 [html] <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> 首先我使用file_get_contents() 函數把API返回的資料檔案讀入一個字串中。然後用simplexml_load_string() 函數把 XML 字串載入對象中。然後再使用這個對象讀取每個xml標籤中的資料,但這裡我遇到了一個問題,返回的xml格式的檔案都是[html] <item> <title>……</title> <rank>……<rank> <value>……<value> </item> 這種格式,這樣我使用“對象”->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] <html> <body> <?php $arr=array("one", "two", "three"); foreach ($arr as $value) { echo "Value: " . $value . "<br />"; } ?> </body> </html> 程式原始碼如下: [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)<12&&strtr($keyword, $arr)>0){ return strtr($keyword, $arr); } else { return false; } }