찾다
백엔드 개발PHP 튜토리얼微信公众平台开发(六) 翻译功能开发_PHP教程

微信公众平台开发(六) 翻译功能开发_PHP教程

Jul 20, 2016 am 11:14 AM
우수한기능일기 예보성취하다플랫폼개발하다위챗기사~의번역하다

上一篇文章介绍了微信公众平台天气预报功能的开发,实现了微信公众平台的第一个实际应用,在接下来的这一篇文章中,我们将对微信翻译功能进行简单开发,以供读者参考。

二、思路分析

和上一篇查询天气的思路差不多,首先要对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果含有,则提取待翻译内容,然后调用网络上开放的翻译API 进行相关翻译。

网络上有很多翻译API,大家可以根据自己的需求进行选择。这里我们选择应用比较广泛的,翻译功能还比较不错的有道翻译API 和百度翻译API,下面对这两种API的相关信息进行分析。

3.1 有道翻译API

3.1.1 API 地址:http://fanyi.youdao.com/openapi

注意:有道提供的API 接口,在下面的测试时,json 数据格式返回不正确,到网上查阅资料,可以正确翻译的地址为 http://fanyi.youdao.com/fanyiapi,这点注意。

3.1.2 申请key

按照要求填写相关信息,这些信息,下面会使用到,所以请认真如实填写。

申请完之后,会在下方生成API key 和keyfrom,使用API 时会用到。

3.1.3 API 使用范例

3.1.4 数据格式

a. xml 格式

http://fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533&type=data&doctype=&version=1.1&q=这里是有道翻译API

<span <?</span><span xml version="1.0" encoding="UTF-8"</span><span ?></span>
<span <</span><span youdao-fanyi</span><span ></span>
    <span <</span><span errorCode</span><span ></span>0<span </</span><span errorCode</span><span ></span>
    <span <!--</span><span  有道翻译 </span><span --></span>
    <span <</span><span query</span><span ></span><span <![CDATA[</span><span 这里是有道翻译API</span><span ]]></span><span </</span><span query</span><span ></span>
    <span <</span><span translation</span><span ></span>
        <span <</span><span paragraph</span><span ></span><span <![CDATA[</span><span Here is the youdao translation API</span><span ]]></span><span </</span><span paragraph</span><span ></span>
    <span </</span><span translation</span><span ></span>
<span </</span><span youdao-fanyi</span><span ></span>

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

<span {
    "errorCode":0
    "query":"翻译",
    "translation":["translation"], // 有道翻译
    "basic":{ // 有道词典-基本词典
        "phonetic":"fān y&igrave;",
        "explains":[
            "translate",
            "interpret"
        ]
    },
    "web":[ // 有道词典-网络释义
        {
            "key":"翻译",
            "value":["translator","translation","translate","Interpreter"]
        },
        {...}
    ]
}</span>

3.2 百度翻译API

3.2.1 API 地址:http://openapi.baidu.com/public/2.0/bmt/translate

3.2.2 获取api key

开发者在百度连接平台上注册得到的授权API key,详细请参阅: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 使用范例

百度翻译API 响应的数据格式为UTF-8编码的PHP数组对应的标准JSON字符串。

<span {
    &ldquo;from&rdquo;:&rdquo;zh&rdquo;,
    &ldquo;to&rdquo;:&rdquo;en&rdquo;,
    &ldquo;trans_result&rdquo;:[]
}</span>

trans_result 为一个数组,其中每一个{}就是一个段落,结构如下所示:

<span trans_result: [
{},
{},
{}
]</span>

段落结果即为trans_result 数组中的一项:

<span {
&ldquo;src&rdquo;:&rdquo;&rdquo;,
&ldquo;dst&rdquo;:&rdquo;&rdquo;
}</span>

段落结果说明:

经json_decode 后的形式:

<span {
    "from": "en",
    "to": "zh",
    "trans_result": [
        {
            "src": "today",
            "dst": "今天"
        }
    ]
}</span>

翻译消息的格式是 “翻译+待翻译内容”,所以首先截取前两个字,判断是否为 “翻译” 关键字。

使用php函数 mb_substr() 截取,关于该函数的用法上一篇已经讲过,这里不再赘述。

从消息的开头开始截取,截取两个字符,然后加以判断是否为 “翻译” 关键字。

判断是否只输入“翻译”两字,这样输入,没有待翻译内容,则输入的消息也不正确。

接下来进行待翻译内容提取:

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

接着调用函数进行翻译。

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

5.1 有道翻译API

数据接口:

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

5.1.1 xml 格式

关键代码如下:

<span public</span> <span function</span> youdaoDic(<span $word</span><span ){

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

        </span><span $paras</span> = <span $xmlStyle</span>->translation-><span paragraph;

        </span><span if</span>(<span $errorCode</span> == 0<span ){
            </span><span return</span> <span $paras</span><span ;
        }</span><span else</span><span {
            </span><span return</span> "无法进行有效的翻译"<span ;
        }<br />}</span>

说明:

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

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

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

5.1.2 json 格式

关键代码如下:

    <span public</span> <span function</span> youdaoDic(<span $word</span><span ){

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

        </span><span $result</span> = json_decode(<span $jsonStyle</span>,<span true</span><span );
        
        </span><span $errorCode</span> = <span $result</span>['errorCode'<span ];
        
        </span><span $trans</span> = ''<span ;

        </span><span if</span>(<span isset</span>(<span $errorCode</span><span )){

            </span><span switch</span> (<span $errorCode</span><span ){
                </span><span case</span> 0:
                    <span $trans</span> = <span $result</span>['translation']['0'<span ];
                    </span><span break</span><span ;
                </span><span case</span> 20:
                    <span $trans</span> = '要翻译的文本过长'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 30:
                    <span $trans</span> = '无法进行有效的翻译'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 40:
                    <span $trans</span> = '不支持的语言类型'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 50:
                    <span $trans</span> = '无效的key'<span ;
                    </span><span break</span><span ;
                </span><span default</span>:
                    <span $trans</span> = '出现异常'<span ;
                    </span><span break</span><span ;
            }
        }
        </span><span return</span> <span $trans</span><span ;
        
    }</span>

说明:

把整个文件读入一个字符串中

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

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

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

5.2 百度翻译API

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

关键代码如下:

    <span //</span><span 百度翻译</span>
    <span public</span> <span function</span> baiduDic(<span $word</span>,<span $from</span>="auto",<span $to</span>="auto"<span ){
        
        </span><span //</span><span 首先对要翻译的文字进行 urlencode 处理</span>
        <span $word_code</span>=<span urlencode</span>(<span $word</span><span );
        
        </span><span //</span><span 注册的API Key</span>
        <span $appid</span>="<span YourApiKey</span>"<span ;
        
        </span><span //</span><span 生成翻译API的URL GET地址</span>
        <span $baidu_url</span> = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".<span $appid</span>."&q=".<span $word_code</span>."&from=".<span $from</span>."&to=".<span $to</span><span ;
        
        </span><span $text</span>=json_decode(<span $this</span>->language_text(<span $baidu_url</span><span ));

        </span><span $text</span> = <span $text</span>-><span trans_result;

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

        </span><span if</span>(!<span function_exists</span>('file_get_contents'<span )){

            </span><span $file_contents</span> = <span file_get_contents</span>(<span $url</span><span );

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

            </span><span $timeout</span> = 5<span ;

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

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

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

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

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

        </span><span return</span> <span $file_contents</span><span ;
    }</span>

说明:

baiduDic() 函数:

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

trans_result;  //获取翻译结果数组

dst;  //取第一个数组的dst 结果。

language_text() 函数:

有道翻译-xml 格式:

有道翻译-json 格式:

百度翻译:

注意:该翻译功能放在SAE上能够正常运行,但在BAE上运行不成功,各位有兴趣自行测试一下。

请到QQ群213260412共享里下载使用。

请关注 卓锦苏州 微信公众帐号,卓锦苏州 基于SAE 平台开发,针对于主流的微信功能进行开发测试。

您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。

1. 登录微信客户端,朋友们 -> 添加朋友 -> 搜号码 -> zhuojinsz,查找并关注。

2. 扫描二维码:

卓锦苏州功能列表。

 


We Believe, Great People Share Knowledge...

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440249.htmlTechArticle上一篇文章介绍了微信公众平台天气预报功能的开发,实现了微信公众平台的第一个实际应用,在接下来的这一篇文章中,我们将对微信翻...
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP : 서버 측 스크립팅 언어 소개PHP : 서버 측 스크립팅 언어 소개Apr 16, 2025 am 12:18 AM

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

PHP 및 웹 : 장기적인 영향 탐색PHP 및 웹 : 장기적인 영향 탐색Apr 16, 2025 am 12:17 AM

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택Apr 16, 2025 am 12:16 AM

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

신화를 폭로 : PHP가 실제로 죽은 언어입니까?신화를 폭로 : PHP가 실제로 죽은 언어입니까?Apr 16, 2025 am 12:15 AM

PHP는 죽지 않았습니다. 1) PHP 커뮤니티는 성능 및 보안 문제를 적극적으로 해결하고 PHP7.x는 성능을 향상시킵니다. 2) PHP는 최신 웹 개발에 적합하며 대규모 웹 사이트에서 널리 사용됩니다. 3) PHP는 배우기 쉽고 서버가 잘 수행되지만 유형 시스템은 정적 언어만큼 엄격하지 않습니다. 4) PHP는 컨텐츠 관리 및 전자 상거래 분야에서 여전히 중요하며 생태계는 계속 발전하고 있습니다. 5) Opcache 및 APC를 통해 성능을 최적화하고 OOP 및 설계 패턴을 사용하여 코드 품질을 향상시킵니다.

PHP vs. Python 토론 : 어느 것이 더 낫습니까?PHP vs. Python 토론 : 어느 것이 더 낫습니까?Apr 16, 2025 am 12:03 AM

PHP와 Python에는 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. 1) PHP는 웹 개발, 배우기 쉽고 풍부한 커뮤니티 리소스에 적합하지만 구문은 현대적이지 않으며 성능과 보안에주의를 기울여야합니다. 2) Python은 간결한 구문과 배우기 쉬운 데이터 과학 및 기계 학습에 적합하지만 실행 속도 및 메모리 관리에는 병목 현상이 있습니다.

PHP의 목적 : 동적 웹 사이트 구축PHP의 목적 : 동적 웹 사이트 구축Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.