微信公众平台开发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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux之基础I/O

目录 一、C语言中的文件操作 二、系统文件操作I/O 三、文件描述符fd 1、文件描述符的引入 2、对fd的理解 3、文件描述符的分配规则 四、重定向 1、重定向的原理 2、重定向的系统调用dup2 五、Linux下一切皆文件 一、C语言中的文件操作 1、打开和关闭 在C语言的文…

moore和mealy_Mealy机和Moore机的比较研究 目录

moore和mealyFinite automata may also have outputs corresponding to each input symbol. Such finite automata are known as finite automata with the output. 有限自动机还可以具有与每个输入符号相对应的输出。 这种有限自动机称为输出的有限自动机。 There are two fi…

oracle sys连接不上,oracle – 为什么我不能在SYS拥有的对象上创建触发器?

在尝试创建名为ghazal_current_bef_upd_row的触发器时&#xff1a;create trigger ghazal_current_bef_upd_rowbefore update on ghazal_currentfor each rowwhen (new.Rating < old.Rating)begininsert into ghazal_current_audit(GhazalName,Old_Rating,New_Rating)values…

大一python编程题_请教python编程问题(作业就剩这几道题了)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1. def cleanword(word):(用Python写出程序&#xff0c;使程序可以通过下面的doctest)""">>> cleanword(what?)what>>> cleanword("now!")now>>> cleanword(?"word!,$…

Linux笔记1-5 --用户

## 1 ## 用户理解用户就是系统使用者的身份在系统中用户存储为若干窜字符若干个系统配置文件用户信息涉及到的系统配置文件&#xff1a;/etc/passwd ###用户信息用户&#xff1a;密码&#xff1a;uid&#xff1a;gid&#xff1a;说明&#xff1a;家目录&#xff1a;用户使用…

python运维开发培训_运维架构师-Python 自动化运维开发-014

运维架构师-Python 自动化运维开发-014九、标准数据类型1、为什么编程语言中要有类型类型有以下几个重要角色&#xff1a;对机器而言&#xff0c;类型描述了内存中的电荷是怎么解释的。对编译器或者解释器而言&#xff0c;类型可以协助确保上面那些电荷、字节在程序的运行中始终…

JavaScript | 演示函数中按值调用的示例

Here, we are designing a function named change() that has an argument and we are trying to change the value of the passed argument inside the function, but it will not effect to the main/actual argument that is passed as the argument while calling. 在这里&…

机器视觉支架制作(带效果测试)

图像处理系统中&#xff0c;镜头、光源的选配&#xff0c;对于最后能否产生稳定的识别效果至关重要。而搭载镜头、光源的是支架。机器视觉的支架一般都是根据项目的具体需要进行配置的&#xff0c;搜索淘宝能够得到一些商品。 这些支架形状不一&#xff0c;价格在数百元到千元之…

c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为十六进制字符串(char [])...

c语言中将整数转换成字符串Given an ASCII string (char[]) and we have to convert it into Hexadecimal string (char[]) in C. 给定一个ASCII字符串(char [])&#xff0c;我们必须在C中将其转换为十六进制字符串(char [])。 Logic: 逻辑&#xff1a; To convert an ASCII …

redis rdb aof区别_理解Redis的持久化机制:RDB和AOF

什么是Redis持久化?Redis作为一个键值对内存数据库(NoSQL)&#xff0c;数据都存储在内存当中&#xff0c;在处理客户端请求时&#xff0c;所有操作都在内存当中进行&#xff0c;如下所示&#xff1a;这样做有什么问题呢&#xff1f;注 意文末有&#xff1a;3625页互联网大厂面…

python--批量下载豆瓣图片

溜达豆瓣的时候&#xff0c;发现一些图片&#xff0c;懒得一个一个扒&#xff0c;之前写过c#和python版本的图片下载&#xff0c;因此拿之前的Python代码来改了改&#xff0c;折腾出一个豆瓣版本&#xff0c;方便各位使用 # -*- coding:utf8 -*- import urllib2, urllib, socke…

linux touch权限不够,Linux下的Access、Modify、Change , touch的使用以及权限问题

每个文件在linux下面都会记录许多的时间参数&#xff0c;其实是有三个主要的变动时间&#xff0c;那么&#xff0c;这三个时间的意义又是什么&#xff1f;下面我们来介绍&#xff1a;* Modify time(mtime)当该文件的“内容数据”更改时&#xff0c;就会更新这个时间。内容数据指…

scala 获取数组中元素_从Scala中的元素列表中获取随机元素

scala 获取数组中元素We can access a random element from a list in Scala using the random variable. To use the random variable, we need to import the Random class. 我们可以使用随机变量从Scala中的列表访问随机元素。 要使用随机变量&#xff0c;我们需要导入Rand…

ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

已有条件: ubuntu14.04cuda7.5anaconda2(即python2.7)matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照:2015.08.17 Ubuntu 14.04cuda 7.5caffe安装配置 详情:先下载好cudnn-7.5-linux-x64-v5.1-rc.tgz安装包(貌似需要官网申请) 解压: tar -zxvf cudnn-7.…

python excel导入oracle数据库_【Python代替Excel】12:Python操作oracle数据库

日常工作中&#xff0c;如果有数据库权限&#xff0c;那么在oracle中提取数据、在Python中处理是比较方便的。Python也提供了一个库专门操纵数据库。今天就专门来讲讲如何在Python中操作数据库。准备工作需要工具&#xff1a;oracle、PL/SQL、Pythonimport cx_Oracle如果用anac…

Linux 金字塔 的shell命令,linux下保留文件系统下剩余指定数目文件的shell脚本

原文出处&#xff1a;http://www.jbxue.com/article/13808.html (原创文章&#xff0c;转载请注明出处)本节内容&#xff1a;保留文件系统下剩余指定数目的文件例子&#xff1a;#!/bin/bash#-------------------------------#Description: Back up your files#site: www.jbxue.…

前端干货之JS最佳实践

持续更新地址 https://wdd.js.org/js-best-pr... 1. 风格 一千个读者有一千个哈姆雷特&#xff0c;每个人都有自己的code style。我也曾为了要不要加分号给同事闹个脸红脖子粗&#xff0c;实际上有必要吗&#xff1f; 其实JavaScript已经有了比较流行的几个风格 JavaScript Sta…

python requests和urllib_Python——深入理解urllib、urllib2及requests(requests不建议使用?)...

深入理解urllib、urllib2及requestsPython 是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido vanRossum于1989年底发明&#xff0c;第一个公开发行版发行于1991年&#xff0c;Python 源代码同样遵循 GPL(GNU General PublicLicense)协议[1] 。Python语法简洁而清晰…

ssh查找linux端口,linux – 查找当前连接的端口号SSH

我正在使用SSH连接创建一个本地模拟器(未连接到Internet).我已经开始使用特定范围的端口号进行sshd,并对一系列设备进行NAT处理.我必须找到当前连接的端口号.OS CentOS 5.5OpenSSH 6.1我做了以下事情.它适用于正常使用(手动用户).但是当尝试严格的测试(自动化)时,似乎有时找不到…

this.getstate_Java线程类Thread.State getState()方法(带示例)

this.getstate线程类Thread.State getState() (Thread Class Thread.State getState()) This method is available in package java.lang.Thread.getState(). 软件包java.lang.Thread.getState()中提供了此方法。 This method is used to return the state of this thread. 此方…