PHP微信開(kāi)發(fā)之查詢(xún)城市天氣_php實(shí)例
Jul 06, 2016 pm 01:32 PMPHP微信查詢(xún)城市天氣,首先,你需要找到一個(gè)獲取天氣的API,此處,我用的是百度的apistore,申請(qǐng)和使用API的網(wǎng)址:http://apistore.baidu.com/apiworks/servicedetail/112.html?
登錄百度賬號(hào),并用手機(jī)發(fā)送請(qǐng)求獲取apikey。有了apikey,可以按照它的示例來(lái)請(qǐng)求城市天氣了。(可以按照城市中文名,拼音,城市編號(hào)等來(lái)查詢(xún))?
你可以現(xiàn)在本地做測(cè)試,請(qǐng)求完成之后,再放到自己的域名空間的腳本里。
?測(cè)試的腳本例如:(注意apikey填寫(xiě)自己申請(qǐng)的)?
header('Content-type:text/html;charset=UTF-8'); $ch = curl_init(); $url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname=上海'; $header = array( 'apikey: ',//你的apikey ); // 添加apikey到header curl_setopt($ch, CURLOPT_HTTPHEADER , $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 執(zhí)行HTTP請(qǐng)求 curl_setopt($ch , CURLOPT_URL , $url); $res = curl_exec($ch); $res = json_decode($res, true); echo "<pre class="brush:php;toolbar:false">"; print_r($res); echo ""; $contentStr = ""; foreach($res as $k=>$v){ if($k == "retData"){ $contentStr = "城市:" . $v['city'] . "\n"; $contentStr .= "日期:" . $v['date'] . "\n"; $contentStr .= "天氣:" . $v['weather'] ."\n"; $contentStr .= "平均氣溫:" . $v['temp'] . "℃\n"; $contentStr .= "最低氣溫:" . $v['l_tmp'] ."℃\n"; $contentStr .= "最高氣溫:" . $v['h_tmp'] . "℃\n"; $contentStr .= "風(fēng)力:" . $v['WS'] . "\n"; $contentStr .= "風(fēng)向:" . $v['WD'] . "\n"; $contentStr .= "日出時(shí)間:" . $v['sunrise'] . "\n"; $contentStr .= "日落時(shí)間:" . $v['sunset'] . "\n"; $contentStr .= "經(jīng)度:" . $v['longitude'] . "\n"; $contentStr .= "緯度:" . $v['latitude']; } } echo $contentStr;
如果你填寫(xiě)了自己的apikey,那么應(yīng)該能獲取到所請(qǐng)求的天氣了:
如果能返回正常的數(shù)據(jù)了,那么就可以放到你的域名空間里了。(公眾平臺(tái)里開(kāi)發(fā)者中心填寫(xiě)的url,該url有連接微信接口等功能)
如果你看不懂下面的代碼或者第一次接觸微信開(kāi)發(fā),可以參考我之前的文章:http://www.php.net/article/87252.htm
下面的代碼是responseMsg的一部分:
public function responseMsg(){ <span style="white-space:pre"> </span>//get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信發(fā)來(lái)的XML數(shù)據(jù) //extract post data if(!empty($postStr)){ //解析post來(lái)的XML為一個(gè)對(duì)象$postObj $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; //請(qǐng)求消息的用戶(hù) $toUsername = $postObj->ToUserName; //"我"的公眾號(hào)id $keyword = trim($postObj->Content); //用戶(hù)發(fā)送的消息內(nèi)容 $time = time(); //時(shí)間戳 $msgtype = 'text'; //消息類(lèi)型:文本 $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; if($postObj->MsgType == 'event'){ //如果XML信息里消息類(lèi)型為event if($postObj->Event == 'subscribe'){ //如果是訂閱事件 $contentStr = "歡迎訂閱misaka去年夏天!\n更多精彩內(nèi)容:http://blog.csdn.net/misakaqunianxiatian"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr); echo $resultStr; exit(); } } $which = mb_substr($keyword, 0, 2, 'UTF-8');//獲取要返回什么樣的信息 if($which== "翻譯"){ //如果要進(jìn)行翻譯 //調(diào)用有道翻譯API進(jìn)行翻譯 }elseif($which == "天氣"){ $wea = $which; $city = str_replace($wea, "", $keyword); $ch = curl_init(); $url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname=' . $city; $header = array('apikey: '); //此處的apikey使用自己申請(qǐng)的apikey,填在冒號(hào)之后 // 添加apikey到header curl_setopt($ch, CURLOPT_HTTPHEADER , $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 執(zhí)行HTTP請(qǐng)求 curl_setopt($ch , CURLOPT_URL , $url); $res = curl_exec($ch); $res = json_decode($res, true); $contentStr = ""; foreach($res as $k=>$v){ if($k == "retData"){ $contentStr = "城市:" . $v['city'] . "\n"; $contentStr .= "日期:" . $v['date'] . "\n"; $contentStr .= "天氣:" . $v['weather'] ."\n"; $contentStr .= "平均氣溫:" . $v['temp'] . "℃\n"; $contentStr .= "最低氣溫:" . $v['l_tmp'] ."℃\n"; $contentStr .= "最高氣溫:" . $v['h_tmp'] . "℃\n"; $contentStr .= "風(fēng)力:" . $v['WS'] . "\n"; $contentStr .= "風(fēng)向:" . $v['WD'] . "\n"; $contentStr .= "日出時(shí)間:" . $v['sunrise'] . "\n"; $contentStr .= "日落時(shí)間:" . $v['sunset'] . "\n"; $contentStr .= "經(jīng)度:" . $v['longitude'] . "\n"; $contentStr .= "緯度:" . $v['latitude']; } } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr); echo $resultStr; exit(); }else{ $contentStr = "輸入翻譯XXX可以進(jìn)行翻譯(=・ω・=)\n\n輸入天氣XX可以查詢(xún)城市天氣"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr); echo $resultStr; exit(); }?
?
完成之后(別忘了填寫(xiě)apikey),你的訂閱號(hào)里,輸入天氣上海,那么應(yīng)該能查到上海當(dāng)天的天氣了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

Phpisstillrelevantinmodernenterpriseenvironments.1.modernphp (7.xand8.x) Menawarkan Perpaduan Perlengkapan, ketegangan, jitcompilation, danmodernsyntax, makeitsuatableforlarge-scaleapplications.2.phpintegratefective

Elakkan masalah pertanyaan n 1, mengurangkan bilangan pertanyaan pangkalan data dengan memuatkan data yang berkaitan terlebih dahulu; 2. Pilih hanya medan yang diperlukan untuk mengelakkan memuat entiti lengkap untuk menjimatkan memori dan jalur lebar; 3. Gunakan strategi cache yang munasabah, seperti cache sekunder doktrin atau hasil pertanyaan frekuensi tinggi Cache; 4. Mengoptimumkan kitaran hayat entiti dan panggilan jelas () secara teratur untuk membebaskan memori untuk mengelakkan limpahan memori; 5. Memastikan indeks pangkalan data wujud dan menganalisis penyata SQL yang dihasilkan untuk mengelakkan pertanyaan yang tidak cekap; 6. Lumpuhkan penjejakan perubahan automatik dalam senario di mana perubahan tidak diperlukan, dan gunakan array atau mod ringan untuk meningkatkan prestasi. Penggunaan ORM yang betul memerlukan menggabungkan pemantauan SQL, caching, pemprosesan batch dan pengoptimuman yang sesuai untuk memastikan prestasi aplikasi sambil mengekalkan kecekapan pembangunan.

Untuk membina microservice PHP yang fleksibel, anda perlu menggunakan RabbitMQ untuk mencapai komunikasi asynchronous, 1. Decouple perkhidmatan melalui beratur mesej untuk mengelakkan kegagalan cascade; 2. Konfigurasi beratur berterusan, mesej berterusan, pengesahan pelepasan dan ACK manual untuk memastikan kebolehpercayaan; 3. Menggunakan Backoff Exponential Backoff, TTL dan Kegagalan Pemprosesan Keselamatan Gilir Surat Dead; 4. Gunakan alat seperti penyelia untuk melindungi proses pengguna dan membolehkan mekanisme degupan jantung untuk memastikan kesihatan perkhidmatan; dan akhirnya menyedari keupayaan sistem untuk terus beroperasi dalam kegagalan.

Gunakan subprocess.run () untuk melaksanakan perintah shell dengan selamat dan menangkap output. Adalah disyorkan untuk lulus parameter dalam senarai untuk mengelakkan risiko suntikan; 2. Apabila ciri -ciri shell diperlukan, anda boleh menetapkan shell = benar, tetapi berhati -hati dengan suntikan arahan; 3. Gunakan subprocess.popen untuk merealisasikan pemprosesan output masa nyata; 4. Tetapkan semak = benar untuk membuang pengecualian apabila arahan gagal; 5. Anda boleh secara langsung memanggil rantai untuk mendapatkan output dalam senario mudah; Anda harus memberi keutamaan kepada subprocess.run () dalam kehidupan seharian untuk mengelakkan menggunakan os.system () atau modul yang tidak ditetapkan. Kaedah di atas mengatasi penggunaan teras untuk melaksanakan perintah shell di Python.

Menggunakan imej asas PHP yang betul dan mengkonfigurasi persekitaran docker yang dioptimumkan prestasi yang selamat adalah kunci untuk mencapai pengeluaran siap. 1. Pilih PHP: 8.3-fpm-alpine sebagai imej asas untuk mengurangkan permukaan serangan dan meningkatkan prestasi; 2. Lumpuhkan fungsi berbahaya melalui php.ini adat, matikan paparan ralat, dan aktifkan Opcache dan JIT untuk meningkatkan keselamatan dan prestasi; 3. Gunakan nginx sebagai proksi terbalik untuk menyekat akses kepada fail sensitif dan memajukan permintaan PHP dengan betul kepada PHP-FPM; 4. Gunakan imej pengoptimuman pelbagai peringkat untuk menghapuskan kebergantungan pembangunan, dan menubuhkan pengguna bukan akar untuk menjalankan bekas; 5. Supervisord pilihan untuk menguruskan pelbagai proses seperti Cron; 6. Sahkan bahawa tiada kebocoran maklumat sensitif sebelum penggunaan

Fail Tetapan.JSON terletak di laluan peringkat pengguna atau ruang kerja dan digunakan untuk menyesuaikan tetapan vscode. 1. Laluan peringkat pengguna: Windows adalah C: \ Users \\ AppData \ Roaming \ code \ user \ settings.json, macOS adalah /users//library/applicationsupport/code/user/settings.json, linux adalah/ 2. Laluan Tahap Ruang Kerja: .VSCODE/Tetapan dalam Direktori Root Projek

Mekanisme pengumpulan sampah PHP didasarkan pada penghitungan rujukan, tetapi rujukan bulat perlu diproses oleh pemungut sampah pekeliling berkala; 1. Rujukan kiraan rujukan segera memori apabila tidak ada rujukan kepada pembolehubah; 2. Rujukan rujukan menyebabkan memori tidak dapat dikeluarkan secara automatik, dan ia bergantung kepada GC untuk mengesan dan membersihkannya; 3. GC dicetuskan apabila zval "akar yang mungkin" mencapai ambang atau panggilan secara manual gc_collect_cycles (); 4. Aplikasi PHP jangka panjang harus memantau gc_status () dan hubungi gc_collect_cycles () dalam masa untuk mengelakkan kebocoran ingatan; 5. Amalan terbaik termasuk mengelakkan rujukan bulat, menggunakan gc_disable () untuk mengoptimumkan bidang utama prestasi, dan objek dereference melalui kaedah CLEAR () ORM.
