谷歌翻译返回奇怪的字符串?

时间:2018-04-05 03:05:14

标签: php google-translate

所以我试图从谷歌中获取一个字符串,但正如你所看到的那样翻译

function Translate($fromLang,$toLang,$text){
        $texts = file_get_contents(
        "https://translate.googleapis.com/translate_a/single?client=gtx&sl="
        . $fromLang .
        "&tl=" . 
        $toLang . "&dt=t&q=" . $text);

        return $texts;
    }

但如果参数设置为

,则返回一个如此丑陋的字符串
Print(Translate("en","es","Hello"));

[[["Hola","Hello",null,null,1]],null,"en"]

根据"分散"关于个人使用的不良文件而不支付企业费用这应该有效

1 个答案:

答案 0 :(得分:3)

您需要使用json_decode,然后返回数组的第三级。

function Translate($fromLang,$toLang,$text){
    $texts = file_get_contents("https://translate.googleapis.com/translate_a/single?client=gtx&sl=" . $fromLang . "&tl=" .  $toLang . "&dt=t&q=" . $text);
    $array = json_decode($texts, TRUE);
    return $array[0][0][0];
}

返回的JSON是两个级别,翻译的值是该值的第一个值。因此,您需要[0][0]才能达到正确的级别,然后[0]才能获得该值。

如果您不确定要访问的内容,可以始终使用print_r上的Translate函数中的$array来查看其中包含的内容。