微信公众平台开发5:翻译功能
思路分析
首先对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果有,则提取翻译内容,然后调用网络上开放的翻译API 进行翻译。
我们用有道翻译API:http://fanyi.youdao.com/openapi?path=data-mode
记下申请时的API key 和keyfrom
关键字判断与待翻译内容读取
翻译消息的格式是 “翻译+待翻译内容”,所以首先截取前两个字,判断是否为 “翻译” 关键字。
$str_trans=mb_substr($keyword,0,2,"UTF-8");
从消息的开头开始截取,截取两个字符,然后判断是否为 “翻译” 关键字。
$str_valid=mb_substr($keyword,0,-2,"UTF-8");
从消息的开头开始,截掉末尾的两个字符,判断是否只输入“翻译”两字,若没有翻译内容,则输入的消息也不正确。
接下来进行待翻译内容提取:
$word=mb_substr($keyword,2,200,"UTF-8");
从消息的开头第3个字符开始截取,截取200个字符(API要求字符长度不能超过200),截取出来的即为待翻译内容。注意要翻译的文本,必须是UTF-8编码,需要进行urlencode编码,不然可能返回60错误。
接着调用函数进行翻译。
//调用有道词典
$contentStr=$this->youdaoDic($word);
具体实现
数据接口:
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
将上面的keyfrom 和key换成上面申请的内容,然后选择doctype,再输入要翻译的文本,就可以调用有道翻译API 进行翻译了。
有道翻译提供了三种数据格式,这里我们只讲解两种,即xml 和json。
xml 格式
publicfunction youdaoDic($word){ $keyfrom="orchid";//申请APIKEY时填的网站名称内容
$apikey="YourApiKey";//从有道申请的APIKEY //有道翻译-xml格式
$url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=xml&version=1.1&q='.$word; $xmlStyle=simplexml_load_file($url_youdao); $errorCode=$xmlStyle->errorCode; $paras=$xmlStyle->translation->paragraph;// 获取翻译内容 if($errorCode==0){return$paras;}else{return"无法进行有效的翻译";}}
json 格式
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=good {"errorCode":0"query":"good", "translation":["好"], // 有道翻译 "basic":{// 有道词典-基本词典 "phonetic":"gʊd""uk-phonetic":"gʊd"//英式发音 "us-phonetic":"ɡʊd"//美式发音 "explains":["好处", "好的""好"]}, "web":[// 有道词典-网络释义 {"key":"good", "value":["良好","善","美好"]}, {...}]} 代码:
publicfunction youdaoDic($word){ $keyfrom="orchid";//申请APIKEY时所填的网站名称内容
$apikey="YourApiKey";//从有道申请的APIKEY //有道翻译-json格式
$url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=json&version=1.1&q='.$word; $jsonStyle=file_get_contents($url_youdao); $result=json_decode($jsonStyle,true);// 为 TRUE 时,返回 array $errorCode=$result['errorCode']; $trans=''; if(isset($errorCode)){// switch($errorCode){case0:$trans=$result['translation']['0'];break;case20:$trans='要翻译的文本过长';break;case30:$trans='无法进行有效的翻译';break;case40:$trans='不支持的语言类型';break;case50:$trans='无效的key';break;default:$trans='出现异常';break;}}return$trans; }
与有道词典的翻译对比如下图所示:
艺搜参考
在线格式化json
http://www.cnblogs.com/mchina/p/3170565.html
http://www.crazyant.net/920.html
http://stackoverflow.com/questions/8068220/check-if-array-is-null-or-not-in-php
微信公众平台开发5:翻译功能相关推荐
- 微信公众平台开发之商品比价功能
微信公众平台开发之商品比价功能是会员日常生活中最贴心的实用查询工具.商品比价给会员的生活带来极大的方便,也使会员对我们官方微信的依赖度提升一个层面.比价功能让我们官方微信的服务更加周到,信息更加全面, ...
- php微信自定义菜单开发,微信公众平台开发自定义菜单功能开发
一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...
- php微信公众点歌台,微信公众平台开发在线点歌功能介绍
微信公众平台的消息接口-音乐消息,这是广大微信公众平台开发者的福音. 根据这一功能,如果能做出在微信中点歌功能,那么我们以后就可以不用安装其他APP, 直接在微信里面关注一个账号,就可以听歌了,还省去 ...
- 微信公众平台开发入门教程(图文)
关键字:微信公众平台开发入门 作者:贝创工作室 原文: http://www.cnblogs.com/imaker/p/5491433.html 背景知识:微信公众平台的开发需要有一定的PHP基础知识 ...
- 微信公众平台开发新手教程(图文具体解释)
因为微信的大热.为了更好的方便使用微信的用户查询一些信息.这篇文章是入门级的微信公众平台开发教程,须要的朋友能够參考下 在这篇新手教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络 ...
- 微信公众平台开发入门教程
转自:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为 ...
- 微信公众平台开发教程之新手初级入门攻略 附PHP代码实例
在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯及XML语言基础.如果你还没有,那么请先学习相关知识. 我们将使用微信公众账号豆立方(微信号:BeanCube)作为 ...
- 微信公众平台开发入门教程(资源来自网络)
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部 ...
- [一车大师]微信公众平台开发入门
由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下. 在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网 ...
- 微信公众平台开发精彩花絮------文章来源:方倍工作室
关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...
最新文章
- MySQL-8.0.x 新特性之索引页合并
- php getfooter,wordpress函数get_footer()用法示例
- pytorchyolov4训练_使用pytorch-yolov5 訓練自己的數據集-2020.6.15
- 视频监控、直播——基于opencv,libx264,live555的RTSP流媒体服务器 (zc301P摄像头)By Chain_Gank...
- RSS 之父炮轰 Google 强推 HTTPS
- 设计模式(五)学习----装饰模式
- 【论文翻译 arXiv 2020】异质网表示学习综述-韩家炜组
- b85主板装服务器系统,华硕b85主板装不上win7怎么办
- 数据归档方案(带流程图)
- php 支付宝退款40004,接入支付宝支付 错误码4000,排查方法——开发记录
- Java编程题修院子_2020大学moocJava程序设计题目答案
- 深度学习之图片压缩技术
- oa项目经验描述_简历中项目经验模版
- scrapy_redis去重优化(已有7亿条数据),附Demo福利
- win10输入法经常自动添加 英语(美国)键盘
- Pytorch的grad、backward()、zero_grad()
- unityplayerpre存档_Unity3d中的PlayerPrefs游戏存档API的扩展
- python中对象的特性_python面对对象-三大特性
- 学会Squid之传统代理和透明代理一篇就够了!
- 《C++程序设计语言》5.9_11输入读一系列的单词,使用quit作为输入的结束单词
热门文章
- php 登陆微博,PHP调用微博接口实现微博登录的方法示例
- android /data/system/dropbox,Android导出dropbox日志
- oracle sql server的区别,oracle与sqlserver的十大区别
- android 仿网易标题栏,仿网易新闻可滑动标题栏TabLayout(文字或图标)
- 低版本Eclipse如何快速设置黑色主题
- 安卓mysql插入数据_【11-25求助】关于Android 的SQLite数据库插入数据报错问题
- 如何利用扩展欧几里得算法求解不定方程_欧几里德算法、拓展欧几里德、中国剩余定理...
- 为什么会有那么多人放弃编程?
- Springboot集成ES启动报错
- ThreadLocal和InheritableThreadLocal使用