検索
ホームページバックエンド開発PHPチュートリアルPHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

【PHP WeChatパブリックプラットフォーム開発シリーズ】

01. WeChatインターフェースを設定する
02. パブリックプラットフォームのサンプルコード解析
03. サブスクリプションイベント(subscribe)処理
04. 簡易返信機能の開発
05.天気予報機能の開発
06.翻訳機能開発


1. はじめに

前回の記事では、WeChat パブリック プラットフォームの天気予報機能の開発と WeChat パブリック プラットフォームの最初の実用化について紹介しました。次の記事では、読者の参考のために WeChat 翻訳機能を簡単に開発します。

2. アイデア分析

天気をクエリするという考え方は、前の記事と同様です。まず、ユーザーが送信したメッセージに「翻訳」キーワードが含まれているかどうかを判断し、含まれている場合は翻訳対象のコンテンツを抽出します。次に、インターネット上のオープン翻訳 API を呼び出します。

3. 翻訳APIの分析

インターネット上には多くの翻訳 API があり、ニーズに応じて選択できます。ここでは、広く使用されており、比較的優れた翻訳機能を備えている Youdao Translation API と Baidu Translation API を選択します。これら 2 つの API の関連情報を以下で分析します。

3.1 Youdao 翻訳 API

3.1.1 APIアドレス: http://fanyi.youdao.com/openapi

注意: Youdao が提供する API インターフェイスでは、次のテスト中に返される JSON データ形式が間違っています。オンラインで情報を確認してください。正しく翻訳できるアドレスは http://fanyi.youdao.com/fanyiapi です。これに注意してください。

3.1.2 キーを申請する

必要に応じて関連情報を入力してください。この情報は以下で使用されますので、慎重かつ真実に入力してください。

申請が完了すると、APIを利用する際に使用するAPIキーとkeyfromが以下に生成されます。

3.1.3 APIの使用例

3.1.4 データ形式

a.xml形式

http://fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533&type=data&doctype=xml&version=1.1&q=Youdao 翻訳 API はこちらです

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

b. json形式

http://fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533&type=data&doctype=json&version=1.1&q=翻訳

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

3.2 Baidu翻訳API

3.2.1 API アドレス: http://openapi.baidu.com/public/2.0/bmt/translate

3.2.2 APIキーを取得する

Baidu 接続プラットフォームに登録されている開発者によって取得される承認された API キー 詳細については、http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9 を参照してください。 %E6 %96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5/ %E5 %85%A5%E9%97%A8%E6%8C%87%E5%8D%97

3.2.3 APIの使用例

3.2.4 データ形式

Baidu Translation API 応答のデータ形式は、UTF-8 でエンコードされた PHP 配列に対応する標準の JSON 文字列です。

リーリー

trans_result は配列であり、各 {} は段落であり、構造は次のとおりです:

リーリー

段落の結果は、trans_result 配列内の項目です:

リーリー

段落結果の説明:

json_decode 後の形式:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

4. キーワード判断と翻訳内容の読み取り

翻訳メッセージの形式は「翻訳 + 翻訳対象コンテンツ」なので、最初の 2 つの単語を切り取って「翻訳」キーワードかどうかを判断します。

PHP 関数 mb_substr() を使用してインターセプトします。この関数の使用法については前の記事で説明したので、ここでは繰り返しません。

$str_trans = mb_substr($keyword,0,2,"UTF-8");

メッセージの先頭からインターセプトを開始し、2 文字をインターセプトして、それが「翻訳」キーワードであるかどうかを判断します。

$str_valid = mb_substr($keyword,0,-2,"UTF-8");

「翻訳」という単語のみを入力するかどうかを決定します。翻訳する内容がない場合、入力されたメッセージは正しくありません。

次に、翻訳するコンテンツを抽出します:

$word = mb_substr($keyword,2,220,"UTF-8");

从消息的开头第3个字符开始截取,截取202个字符,截取出来的即为待翻译内容。

接着调用函数进行翻译。

//调用有道词典
$contentStr = $this->youdaoDic($word);
//调用百度词典
$contentStr = $this->baiduDic($word);

五、具体实现

5.1 有道翻译API

数据接口:

http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本

将上面的keyfrom 和key换成上面申请的内容,然后选择doctype,再输入要翻译的文本,就可以调用有道翻译API 进行翻译了。

有道翻译提供了三种数据格式,这里我们只讲解两种,即xml 和json。

5.1.1 xml 格式

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
public function youdaoDic($word){

        $keyfrom = "orchid";    //申请APIKEY 时所填表的网站名称的内容
        $apikey = "YourApiKey";  //从有道申请的APIKEY
        
        //有道翻译-xml格式
        $url_youdao = &#39;http://fanyi.youdao.com/fanyiapi.do?keyfrom=&#39;.$keyfrom.&#39;&key=&#39;.$apikey.&#39;&type=data&doctype=xml&version=1.1&q=&#39;.$word;
        
        $xmlStyle = simplexml_load_file($url_youdao);
        
        $errorCode = $xmlStyle->errorCode;

        $paras = $xmlStyle->translation->paragraph;

        if($errorCode == 0){
            return $paras;
        }else{
            return "无法进行有效的翻译";
        }
}
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

$xmlStyle = simplexml_load_file($url_youdao);  // PHP 函数,将XML 文档载入对象中。

$errorCode = $xmlStyle->errorCode;  // 获取错误码

$paras = $xmlStyle->translation->paragraph;  // 获取翻译内容

5.1.2 json 格式

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
    public function youdaoDic($word){

        $keyfrom = "orchid";    //申请APIKEY时所填表的网站名称的内容
        $apikey = "YourApiKey";  //从有道申请的APIKEY
        
        //有道翻译-json格式
        $url_youdao = &#39;http://fanyi.youdao.com/fanyiapi.do?keyfrom=&#39;.$keyfrom.&#39;&key=&#39;.$apikey.&#39;&type=data&doctype=json&version=1.1&q=&#39;.$word;
        
        $jsonStyle = file_get_contents($url_youdao);

        $result = json_decode($jsonStyle,true);
        
        $errorCode = $result[&#39;errorCode&#39;];
        
        $trans = &#39;&#39;;

        if(isset($errorCode)){

            switch ($errorCode){
                case 0:
                    $trans = $result[&#39;translation&#39;][&#39;0&#39;];
                    break;
                case 20:
                    $trans = &#39;要翻译的文本过长&#39;;
                    break;
                case 30:
                    $trans = &#39;无法进行有效的翻译&#39;;
                    break;
                case 40:
                    $trans = &#39;不支持的语言类型&#39;;
                    break;
                case 50:
                    $trans = &#39;无效的key&#39;;
                    break;
                default:
                    $trans = &#39;出现异常&#39;;
                    break;
            }
        }
        return $trans;
        
    }
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

$jsonStyle = file_get_contents($url_youdao);  // 把整个文件读入一个字符串中

$result = json_decode($jsonStyle,true);  // 对JSON 格式的字符串进行编码

$errorCode = $result['errorCode'];  // 获取错误码

$trans = $result['translation']['0'];  // 获取翻译结果

5.2 百度翻译API

百度翻译API提供UTF-8编码的PHP数组对应的标准JSON字符串,而且提供了 中->英,中->日,英->中,日->中 四种互译,比有道翻译多了一种。

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
    //百度翻译
    public function baiduDic($word,$from="auto",$to="auto"){
        
        //首先对要翻译的文字进行 urlencode 处理
        $word_code=urlencode($word);
        
        //注册的API Key
        $appid="YourApiKey";
        
        //生成翻译API的URL GET地址
        $baidu_url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".$appid."&q=".$word_code."&from=".$from."&to=".$to;
        
        $text=json_decode($this->language_text($baidu_url));

        $text = $text->trans_result;

        return $text[0]->dst;
    }
        
    //百度翻译-获取目标URL所打印的内容
    public function language_text($url){

        if(!function_exists(&#39;file_get_contents&#39;)){

            $file_contents = file_get_contents($url);

        }else{
                
            //初始化一个cURL对象
            $ch = curl_init();

            $timeout = 5;

            //设置需要抓取的URL
            curl_setopt ($ch, CURLOPT_URL, $url);

            //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

            //在发起连接前等待的时间,如果设置为0,则无限等待
            curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

            //运行cURL,请求网页
            $file_contents = curl_exec($ch);

            //关闭URL请求
            curl_close($ch);
        }

        return $file_contents;
    }
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

这里包含了两个函数,baiduDic() 和 language_text()。

baiduDic() 函数:

$word_code=urlencode($word);  // 首先对要翻译的文字进行 urlencode 处理

$text=json_decode($this->language_text($baidu_url));  // 调用language_text() 函数获取目标URL所打印的内容,然后对JSON 格式的字符串进行编码

$text = $text->trans_result;  //获取翻译结果数组

return $text[0]->dst;  //取第一个数组的dst 结果。

language_text() 函数:

判断file_get_contents() 函数是否存在,如果存在,则使用该函数获取URL内容;如果不存在,则使用cURL 工具获取URL内容。具体参见代码。

六、测试

有道翻译-xml 格式:

有道翻译-json 格式:

百度翻译:

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/739142.htmlTechArticle【PHP微信公众平台开发系列】 01.配置微信接口 02.公众平台示例代码分析 03.订阅事件(subscribe)处理 04.简单回复功能开发 05.天气预报功能...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッション固定攻撃をどのように防ぐことができますか?セッション固定攻撃をどのように防ぐことができますか?Apr 28, 2025 am 12:25 AM

セッション固定攻撃を防ぐための効果的な方法には、次のものがあります。1。ユーザーがログインした後にセッションIDを再生します。 2。安全なセッションID生成アルゴリズムを使用します。 3。セッションタイムアウトメカニズムを実装します。 4。HTTPSを使用したセッションデータを暗号化します。これらの措置は、セッションの固定攻撃に直面するときにアプリケーションが破壊されないようにすることができます。

セッションレス認証をどのように実装しますか?セッションレス認証をどのように実装しますか?Apr 28, 2025 am 12:24 AM

セッションのない認証の実装は、サーバー側のセッションストレージなしですべての必要な情報がトークンに保存されるトークンベースの認証システムであるJSonWebtokens(JWT)を使用することで実現できます。 1)JWTを使用してトークンを生成および検証する、2)トークンが傍受されるのを防ぐためにHTTPSが使用されることを確認する、3)クライアント側にトークンを安全に保存する、4)改ざんを防ぐためにサーバー側のトークンを検証する、5)短期アクセスや長期的なリフレイを使用するなどのトークンの取り消しメカニズムを実装する。

PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?Apr 28, 2025 am 12:24 AM

PHPセッションのセキュリティリスクには、主にセッションハイジャック、セッションの固定、セッション予測、およびセッション中毒が含まれます。 1。HTTPSを使用してCookieを保護することにより、セッションハイジャックを防ぐことができます。 2。ユーザーがログインする前にセッションIDを再生することにより、セッションの固定を回避できます。3。セッションの予測は、セッションIDのランダム性と予測不可能性を確保する必要があります。 4.セッションの中毒は、セッションデータを確認およびフィルタリングすることで防ぐことができます。

PHPセッションをどのように破壊しますか?PHPセッションをどのように破壊しますか?Apr 28, 2025 am 12:16 AM

PHPセッションを破壊するには、最初にセッションを開始してから、データをクリアしてセッションファイルを破壊する必要があります。 1。Session_start()を使用してセッションを開始します。 2。Session_unset()を使用して、セッションデータをクリアします。 3.最後に、session_destroy()を使用してセッションファイルを破壊して、データのセキュリティとリソースのリリースを確保します。

PHPのデフォルトセッションの保存パスをどのように変更できますか?PHPのデフォルトセッションの保存パスをどのように変更できますか?Apr 28, 2025 am 12:12 AM

PHPのデフォルトセッションの保存パスを変更する方法は?次の手順で達成できます。Session_save_path( '/var/www/sessions'); session_start(); PHPスクリプトで、セッション保存パスを設定します。 session.save_path = "/var/www/sessions"をphp.iniファイルに設定して、セッションの保存パスをグローバルに変更します。 memcachedまたはredisを使用して、ini_set( 'session.save_handler'、 'memcached')などのセッションデータを保存します。 ini_set(

PHPセッションに保存されているデータをどのように変更しますか?PHPセッションに保存されているデータをどのように変更しますか?Apr 27, 2025 am 12:23 AM

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

PHPセッションに配列を保存する例を示します。PHPセッションに配列を保存する例を示します。Apr 27, 2025 am 12:20 AM

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

Garbage CollectionはPHPセッションでどのように機能しますか?Garbage CollectionはPHPセッションでどのように機能しますか?Apr 27, 2025 am 12:19 AM

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン