您现在的位置是:网站首页 > 脚本编程>

thinkphp 调用百度翻译API接口实现在线翻译

2013-10-255058人围观
简介 今天闲着无聊在百度开发者中心注册了一下,并用百度翻译开发了一个属于自己的在线翻译,俗话说的好无图无真相,先把效果图给你贴出来。

    今天闲着无聊在百度开发者中心注册了一下,并用百度翻译开发了一个属于自己的在线翻译,俗话说的好无图无真相,先把效果图给你贴出来。

    效果图:

    php代码:

<?php
define("CURL_TIMEOUT",10); 
define("URL","http://api.fanyi.baidu.com/api/trans/vip/translate"); 
define("APP_ID","YOUR APP ID"); //替换为您的APPID
define("SEC_KEY","YOUR SEC KEY");//替换为您的密钥
/*
query 要翻译的文字
from 当前的语种 可以为auto
to 要翻译成的语种 不可以为auto
*/
//翻译入口
function translate($query, $from, $to)
{
    $args = array(
        'q' => $query,
        'appid' => APP_ID,
        'salt' => rand(10000,99999),
        'from' => $from,
        'to' => $to,
    );
    $args['sign'] = buildSign($query, APP_ID, $args['salt'], SEC_KEY);
    $ret = call(URL, $args);
    $ret = json_decode($ret, true);
    return $ret; 
}
//加密
function buildSign($query, $appID, $salt, $secKey)
{
    $str = $appID . $query . $salt . $secKey;
    $ret = md5($str);
    return $ret;
}/
//发起网络请求
function call($url, $args=null, $method="post", $testflag = 0, $timeout = CURL_TIMEOUT, $headers=array())
{
    $ret = false;
    $i = 0; 
    while($ret === false) 
    {
        if($i > 1)
            break;
        if($i > 0) 
        {
            sleep(1);
        }
        $ret = callOnce($url, $args, $method, false, $timeout, $headers);
        $i++;
    }
    return $ret;
}
function callOnce($url, $args=null, $method="post", $withCookie = false, $timeout = CURL_TIMEOUT, $headers=array())
{
    $ch = curl_init();
    if($method == "post") 
    {
        $data = convert($args);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_POST, 1);
    }
    else 
    {
        $data = convert($args);
        if($data) 
        {
            if(stripos($url, "?") > 0) 
            {
                $url .= "&$data";
            }
            else 
            {
                $url .= "?$data";
            }
        }
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(!empty($headers)) 
    {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    if($withCookie)
    {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
    }
    $r = curl_exec($ch);
    curl_close($ch);
    return $r;
}
function convert(&$args)
{
    $data = '';
    if (is_array($args))
    {
        foreach ($args as $key=>$val)
        {
            if (is_array($val))
            {
                foreach ($val as $k=>$v)
                {
                    $data .= $key.'['.$k.']='.rawurlencode($v).'&';
                }
            }
            else
            {
                $data .="$key=".rawurlencode($val)."&";
            }
        }
        return trim($data, "&");
    }
    return $args;
}
?>

文档地址:http://api.fanyi.baidu.com/api/trans/product/apidoc

打赏本站,你说多少就多少

本文地址:https://www.qi522.com/view/40.html

来     源:千奇博客

精彩评论

微信关注

Copyright © 2013-2019 千奇博客 保留所有权利 辽ICP备13008238号