使用PHP進行微信公眾平台開發的樣本_php執行個體

來源:互聯網
上載者:User
1. SAE 資料庫的串連。

需要主機名稱和連接埠,以後的使用是一樣的。

@ $db = new mysqli(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,'你的應用程式名稱'); 

2.XML 的處理。

發送的訊息格式都是 XML 格式,你返回的訊息也必須是 XML 格式。從 XML 裡提取資料,用 SimpleXML,強大又容易使用。封裝成 XML 訊息呢?把訊息模板儲存為字串,然後用 sprintf 進行格式化輸出。

解析伺服器 POST 的資料:

//---------- 接 收 數 據 ---------- //  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //擷取POST資料  //用SimpleXML解析POST過來的XML資料 $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);  $fromUsername = $postObj->FromUserName; //擷取發送方帳號(OpenID) $toUsername = $postObj->ToUserName; //擷取接收方帳號 $msgType = $postObj->MsgType; //訊息內容 

返迴文本訊息:

function sendText($to, $from, $content, $time) {   //返回訊息模板   $textTpl = "   %s   %s   %s   %s   %s   0   ";    //格式化訊息模板   $msgType = "text";   $time = time();   $resultStr = sprintf($textTpl,$to,$from,   $time,$msgType,$content);   echo $resultStr; } 

3. API 介面的調用。

網上有很多 API 介面,如百度翻譯,有道翻譯,天氣預報等,對介面的調用可以直接用 file_get_contents ,也可以用 curl 的方式進行抓取,然後根據返回資料的格式進行資料解析,一般都是 xml 格式或者 json 格式,處理時用 SimpleXML 和 json_decode 是很方便的。對於抓取 API 內容,用重新封裝的函數:

function my_get_file_contents($url){    if(function_exists('file_get_contents')){      $file_contents = file_get_contents($url);    }   else   {         //初始化一個cURL對象     $ch = curl_init();      $timeout = 5;      //設定需要抓取的URL     curl_setopt ($ch, CURLOPT_URL, $url);      //設定cURL 參數,要求結果儲存到字串中還是輸出到螢幕上     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);      //在發起串連前等待的時間,如果設定為0,則無限等待     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);      //運行cURL,請求網頁     $file_contents = curl_exec($ch);      //關閉URL請求     curl_close($ch);   }    return $file_contents; } 百度翻譯 API 的調用如下:function baiduDic($word,$from="auto",$to="auto"){        //首先對要翻譯的文字進行 urlencode 處理   $word_code=urlencode($word);        //註冊的API Key   $appid="yourAPIkey";        //產生翻譯API的URL GET地址   $baidu_url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".$appid."&q=".$word_code."&from=".$from."&to=".$to;        $text=json_decode(my_get_file_contents($baidu_url));    $text = $text->trans_result;    return $text[0]->dst; } 

4.對 “附近” 的經緯度的計算。

用如下模型,計算正方形的經緯度。採用 Haversin 公式。

//$EARTH_RADIUS = 6371;//地球半徑,平均半徑為6371km  /**  *計算某個經緯度的周圍某段距離的正方形的四個點  *  *@param lng float 經度  *@param lat float 緯度  *@param distance float 該點所在圓的半徑,該圓與此正方形內切,預設值為0.5千米  *@return array 正方形的四個點的經緯度座標  */ function returnSquarePoint($lng, $lat,$distance = 0.5){     $EARTH_RADIUS = 6371;   $dlng = 2 * asin(sin($distance / (2 * $EARTH_RADIUS)) / cos(deg2rad($lat)));   $dlng = rad2deg($dlng);       $dlat = $distance/$EARTH_RADIUS;   $dlat = rad2deg($dlat);       return array(         'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),         'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),         'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),         'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)         );  } 將查詢結果按時間降序排列,message 為資料庫中的一個表,location_X 為維度,location_Y 為經度://使用此Function Compute得到結果後,帶入sql查詢。   $squares = returnSquarePoint($lng, $lat);   $query = "select * from message where location_X != 0 and        location_X > ".$squares['right-bottom']['lat']." and location_X< ".$squares['left-top']['lat']        ."and location_Y > ".$squares['left-top']['lng']." and location_Y< ".$squares['right-bottom']['lng']         ."order by time desc"; 

5. 對字串的檢查。

限定為 6-20個字母,符合則返回 true ,否則返回 false,採用Regex進行匹配:

function inputCheck($word) {   if(preg_match("/^[0-9a-zA-Z]{6,20}$/",$word))   {     return true;   }   return false; } 

6.對含中文的字串取子串時,用 mb_substr 進行截取 http://www.php.net/manual/zh/function.mb-substr.php

7.檢測中英文混合的字串長度

<?php    $str = "三知sunchis開發網";    echo strlen($str)."
"; //結果:22 echo mb_strlen($str,"UTF8")."
"; //結果:12 $strlen = (strlen($str)+mb_strlen($str,"UTF8"))/2; echo $strlen; //結果:17 ?>

8. 檢測是否含有中文

<? $str = "測試中文"; echo $str; echo ""; //if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情況下使用 //if (preg_match("/^[\x7f-\xff]+$/", $str)) { //相容gb2312,utf-8 //判斷字串是否全是中文 if (preg_match("/[\x7f-\xff]/", $str)) { //判斷字串中是否有中文 echo "正確輸入"; } else { echo "錯誤輸入"; } ?> 

雙位元組字元編碼範圍
1. GBK (GB2312/GB18030)
\x00-\xff GBK雙位元組編碼範圍
\x20-\x7f ASCII
\xa1-\xff 中文 gb2312
\x80-\xff 中文 gbk

2. UTF-8 (Unicode)
\u4e00-\u9fa5 中文
\x3130-\x318F 韓文
\xAC00-\xD7A3 韓文
\u0800-\u4e00 日文

9. Jquery Mobile 的使用
官網:http://blog.jquerymobile.com/
原來自己寫手機網頁,真是無比痛苦,CSS 調試各種煩,跨平台也很不好,後來發現了這個庫,果然簡單了好多,而且介面看起來漂亮多了。
不過也引入了一些新的問題,比如頁面內 CSS 和 Javascript 的載入,因為 Jquery Mobile 預設是使用 Ajax 載入頁面的,並不會重新整理整個 html ,而是請求一個 page 而已,所以對於多個 page 的頁面不會完全載入,對於 head 裡面的 CSS 和 Javascript 也不會載入,所以一個方法是在連結的屬性裡設定 ajax=false,指明不通過 Ajax 載入頁面,另一個是把 CSS 和 Javascript 的載入放在 page 裡面。在這裡就不具體談了。

10. 移動 Web 調試
一開始每次調試個頁面都要手機串連 WIFI 去重新整理,簡直不能忍!後來終於學乖了...
推薦這個網站:http://www.responsinator.com/?url= 把自己的網頁 url 放在頂端的輸入框裡面然後“Go”,你就可以看到自己網頁在各個平台下了顯示效果,連 Kindle 都有..
當然,開發人員必備的Google也可以為我們代理成手機瀏覽器,按 F12 進入開發人員模式然後點擊右下角的 setting 的表徵圖,可以在 Overrides 裡面設定 User Agent 和 Device metrics,效果同樣不錯。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.