【问题标题】:Google Translate returns weird string?谷歌翻译返回奇怪的字符串?
【发布时间】:2018-04-05 03:05:13
【问题描述】:

所以我试图从谷歌取回一个字符串,但你可以看到翻译

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"]

根据个人使用的“分散”和糟糕的文档而不支付企业费用,这应该可行

【问题讨论】:

  • 是的,我不确定这是一个数组,我想我在某处看到它是 json,我只是不知道我需要用它做什么

标签: php google-translate


【解决方案1】:

需要使用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] 才能获得价值。

如果您不确定要访问什么,您可以随时在Translate 函数中对$array 值使用print_r 来查看它包含的内容。

【讨论】:

  • 主要是$array[0][0][0]
  • 也许将其添加到您对未来访问者的回答中:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 2014-02-28
  • 2015-02-25
  • 2019-06-06
  • 2019-11-14
相关资源
最近更新 更多