第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

PHP微信開發(fā)學(xué)后小擴(kuò)展:漢字在不同的編碼環(huán)境中占不同字節(jié)

標(biāo)簽:
PHP

对于一个仅仅临时过一遍PHP基础,临时看了thinkphp的框架原理,直接学习微信开发的小白来说,在学完了PHP微信开发的提升课程之后,对微信开发总算是能够自己开始摸索了,今天是在学会了使用第三方api在微信中进行天气查询的编码后自主的一些小扩展,想想还是写出来,增加点印象与理解。
渔夫老师给我们讲了个大概,怎么使用第三方api,是直接回复城市名称,然后进行查询,我在想,实际开发中,肯定不能是这样的,用户不可能直接回复一个城市的名称,然后我们就知道他要查询的是天气,肯定需要特定的格式,比如【城市+天气】这样。
嗯~对于一个小白来说,既然老师没告诉我该怎么办,那我就自己想想吧~
首先,假设我们已经告知用户,查询天气需要输入这样-》[城市+天气]的格式,然后我们根据他输入的格式将城市名称提取出来,然后再进行查询和回复。
我想,这里大概需要一个if判断,首先判断用户输入的是否包含‘天气’字符串,我其实并不知道php的这样的函数是什么,于是我百度了一下【php 判断是否包含字符串】,然后果然得到了答案,我决定使用strpos()函数,因为它返回的是一个boolean值,我需要的就是这个。
而其他的如strstr(),则是搜索字符串在另一字符串中的第一次出现,并返回字符串的剩余部分;
stristr(),与strstr()一样,区别是stristr()不区分大小写,而strstr()是分大小写的。
if判断为true后,我想,我需要从用户输入的Content中提取出城市的名称,该怎样实现呢,我觉得应该也是有这样的函数的,于是我又百度了一下【php 截取字符串的函数】,于是,我找到了substr(),他可以帮助我们截取字符串中制定位置的字符串,然而当我这样[substr($content,0,2)]进行城市名称截取的时候,我发现并没有什么卵用,然后我又学到了一个我觉得比较重要的小知识点:汉字在不同的编码环境中占不同的字节空间!
即:utf-8下一个汉字占用3个字节。linux系统默认情况下采用的该种编码方式。
gb2312下一个汉字占用2个字节。windows中文版采用的该种编码方式。
然后我试着这样-->【substr($content,0,6)】,于是实验成功,顺利跑通,见下图↓↓↓
图片描述

代码如下:

if (strtolower($msgType) == 'text') {
                $cityNamePos = '天气';
                if(strpos($content,$cityNamePos)){
                    $ch = curl_init();
                    $city = substr($content,0,6);
                    $url = 'http://apis.baidu.com/apistore/weatherservice/cityname?cityname='.urlencode($city);
                    $header = array(
                        'apikey: b57a13a33f5b10af4954e8d09e416489',
                    );
                    // 添加apikey到header
                    curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    // 执行HTTP请求
                    curl_setopt($ch , CURLOPT_URL , $url);
                    $res = curl_exec($ch);

                    var_dump(json_decode($res));
                    $arr = json_decode($res , true);
                    $content = '查询城市:'.$arr['retData']['city']."\n".
                               '查询日期:20'.$arr['retData']['date']."\n".
                               '当前天气:'.$arr['retData']['weather']."\n".
                               '当前气温:'.$arr['retData']['temp'].'℃';
                    $result = "<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                                </xml>";
                    $textInfo = sprintf($result,$fromUser , $toUser , $time , $msgType , $content);
                    echo $textInfo;
                }else{
                    $content = '查询天气请以[城市+天气]的格式输入,如[北京天气]';
                    $result = "<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                                </xml>";
                    $textInfo = sprintf($result,$fromUser , $toUser , $time , $msgType , $content);
                    echo $textInfo;
                }
            }
}
點(diǎn)擊查看更多內(nèi)容
10人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消