欢迎关注我的微信公众账号“APP每日推荐”
推荐一些精彩手机应用,互联网行业资讯~
<!--题外话 :做这样一个系列的原因在于,这个微信公众平台算的上是我解除编程一来开发的第一个有实际用途的东西,在这之中有很多体会,不敢说讲给大家听,只是同大家分享一下,作为学计算机的,因为专科学的是网络,所以编程解除的并不深,现在开始从新开始学习编程。这里面的代码可能写的不是很规范,还请您指出,我会继续修改的。-->
这个公众账号有这样几层功能,其结构流程图如图所示
$keyword = make_semiangle($keyword); $keywordzhengze = $keyword; $isch = ischinese($keywordzhengze);
首先先从处理输入数据和判断是否为英文说起,这里的处理输入数据主要是对符号的一个处理,众所周知在输入法中有全角符号和半角符号之分,php中是有区分的,所以为了输入数据的准确性,首先要用一个方法来将所有的全角符号转换为半角符号,方法如下:
function make_semiangle($str) { $arr = array('%' => '%', '#' => '#'); return strtr($str, $arr); }本例中因为在预设关键字中只牵扯到这两个符号,所以就只做了这两个。
之后是判断输入的字符串是否是英文,之前在网上看到过很多其他的方法,例如用编码格式等等,但是可能由于我找到的方法不好,经过试验后不能满足我的需求,这里我就只好写了一个判断的方法,很笨但是很实用,就是检测输入字符串的第一个字符是否是英文,这里应该也可以使用asc编码实现,当时没想那么多,就用了最笨的办法,如下
function ischinese($s) { //判断用户输入的字符是英文还是中文 if (substr($s, 0, 1) == "q" || substr($s, 0, 1) == "w" || substr($s, 0, 1) == "e" || substr($s, 0, 1) == "r" || substr($s, 0, 1) == "t" || substr($s, 0, 1) == "y" || substr($s, 0, 1) == "u" || substr($s, 0, 1) == "i" || substr($s, 0, 1) == "o" || substr($s, 0, 1) == "p" || substr($s, 0, 1) == "a" || substr($s, 0, 1) == "s" || substr($s, 0, 1) == "d" || substr($s, 0, 1) == "f" || substr($s, 0, 1) == "g" || substr($s, 0, 1) == "h" || substr($s, 0, 1) == "j" || substr($s, 0, 1) == "k" || substr($s, 0, 1) == "l" || substr($s, 0, 1) == "z" || substr($s, 0, 1) == "x" || substr($s, 0, 1) == "c" || substr($s, 0, 1) == "v" || substr($s, 0, 1) == "b" || substr($s, 0, 1) == "n" || substr($s, 0, 1) == "m") { return "allen"; } else { return 'allcn'; } }通过这一步之后就基本判断了输入的字符串是否为英文了,如果是英文,则直接使用有道翻译的API接口进行翻译,方法如下:
function language($value) { $keyfrom = "XXXXX"; //这里填写的是从有道官方申请的api信息 申请地址:http://fanyi.youdao.com/openapi $apikey = "XXXXX"; // 同上 $qurl = 'http://fanyi.youdao.com/fanyiapi.do?keyfrom=' . $keyfrom . '&key=' . $apikey . '&type=data&doctype=json&version=1.1&q=' . $value; $f = new SaeFetchurl(); $content = $f->fetch($qurl); $sina = json_decode($content, true); //mixed json_decode ( string $json [, bool $assoc ] )接受一个JSON 格式的字符串并且把它转换为 PHP 变量.参数json待解码的 json string 格式的字符串。assoc当该参数为 TRUE 时,将返回array而非 object 。 $errorcode = $sina['errorCode']; $phonetic = $sina['basic']['phonetic']; $explains = $sina['basic']['explains']['0']; $interpret = $sina['basic']['explains']['1']; $interprets = $sina['basic']['explains']['2']; $rtans = ''; if (isset($errorcode)) { switch ($errorcode) { case 0: $trans = $sina['translation']['0']; break; case 20: $trans = '要翻译的文本过长'; break; case 30: $trans = '无法进行有效的翻译'; break; case 40: $trans = '不支持的语言类型'; break; case 50: $trans = '无效的key'; break; default: $trans = '出现异常'; break; } } return $trans . "\n" . $phonetic . "\n" . $explains . "\n" . $interpret . "\n" . $interprets; }通过这个方法之后,返回的结果就是对应英文单词短语的翻译。通过
$contentStr = language($keyword); //接收返回结果,
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr;将$contentStr填充到$textTpl的相应位置,最后使用echo输入结果到微信。
预设关键字:这里指的是该微信公众平台提供的一些基础功能的实现如下
这些“琴院市场”“随便”“1”……这些就是预设关键字,这里判断方法也很简单,一个if语句即可搞定。
基础功能就不再啰嗦了,无非就是匹配关键字之后,调用相应的方法,在方法中返回填充的$contentStr或者是图文回复中的图片和文章的url,这里的图文消息我们是存储在了微信公众平台的素材管理里面,这样对调用的速度有保障,而且比较美观。
这里我详细和大家分享这样几个功能“空教室查询”“随便”“琴院Siri”,这一篇先简单分享一下这几个功能。
1.自习功能:直接回复“自习”即可实现查询当前时间段没有课的教室(如果用户发送“自习”两个字,则自动记录下当前发送的时间,经过转码后,与数据库中的信息匹配,匹配结果返回到微信中)
2.琴院Siri:回复想了解的问题,系统将自动回复相关的答案(分词技术将句子中的动词,名词分出来,分别与数据库中的信息进行匹配,将所有关键字的匹配结果返回到微信中,如果没有匹配成功,则返回有道翻译,同时将用户提问的语句存储在数据库中,以备工作人家将相关问题的回答添加的数据库中)
3.随便:校园里的专属功能,可以随机出餐厅或者学校周边的小吃,供那些不知道该吃什么的同学选择(随机数,微信图文消息中也可以没有图片,这样显得很像是“菜单”,Html)