微信公眾平臺開發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.pswp.cn/news/542493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542493.shtml
英文地址,請注明出處:http://en.pswp.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. 此方…