Heim >Backend-Entwicklung >PHP-Tutorial >达人们帮小弟看看【百度PHP翻译AP】I咋用?

达人们帮小弟看看【百度PHP翻译AP】I咋用?

WBOY
WBOYOriginal
2016-06-20 12:43:05949Durchsuche

/***************************************************************************
 * Copyright (c) 2015 Baidu.com, Inc. All Rights Reserved * 
**************************************************************************/
/**
 * @file baidu_transapi.php 
 * @author mouyantao(mouyantao@baidu.com)
 * @date 2015/06/23 14:32:18
 * @brief 
 *  
 **/

define("CURL_TIMEOUT",   10); 
define("URL",            "http://api.fanyi.baidu.com/api/trans/vip/translate"); 
define("APPID",         "YOUR APP ID"); //替换为您的APPID
define("Password",        "YOUR SEC KEY");//替换为您的密钥

//翻译入口
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;
}/*}}}*/

?>


回复讨论(解决方案)

直接调用就可以了,但首先你要在百度申请一个APP_ID

直接调用就可以了,但首先你要在百度申请一个APP_ID



申请过了。但是不太会用,还有一个HTM版本的您看看

nbsp;html>

    


可打开浏览器控制台查看结果

<script></script>
<script></script>
<script> <br />var appid = '20151202000007220'; <br />var key = '3isbBE_qAhSRYi1FmSF3'; <br />var salt = (new Date).getTime(); <br />var query = 'apple'; <br />// 多个query可以用\n连接 如 query='apple\norange\nbanana\npear' <br />var from = 'en'; <br />var to = 'zh'; <br />var str1 = appid + query + salt +key; <br />var sign = MD5(str1); <br />$.ajax({ <br /> url: 'http://api.fanyi.baidu.com/api/trans/vip/translate', <br /> type: 'get', <br /> dataType: 'jsonp', <br /> data: { <br /> q: query, <br /> appid: appid, <br /> salt: salt, <br /> from: from, <br /> to: to, <br /> sign: sign <br /> }, <br /> success: function (data) { <br /> console.log(data); <br /> } <br />}); <br /> <br /></script>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn