Google 翻译 returns 奇怪的字符串?
Google Translate returns weird string?
所以我试图从 google 取回一个字符串,但如您所见进行了翻译
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;
}
但是如果参数设置为
,这个returns一个像这样丑陋的字符串
Print(Translate("en","es","Hello"));
[[["Hola","Hello",null,null,1]],null,"en"]
根据 "scattered" 和糟糕的个人使用文档,无需支付企业费用,这应该可行
你需要使用json_decode
然后return数组的第三层。
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];
}
returned JSON是两层中的,翻译后的值是第一个值。所以你需要 [0][0]
才能达到正确的水平,然后 [0]
才能获得价值。
如果您不确定要访问什么,您可以随时在 Translate
函数中对 $array
值使用 print_r
来查看它包含的内容。
所以我试图从 google 取回一个字符串,但如您所见进行了翻译
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;
}
但是如果参数设置为
,这个returns一个像这样丑陋的字符串Print(Translate("en","es","Hello"));
[[["Hola","Hello",null,null,1]],null,"en"]
根据 "scattered" 和糟糕的个人使用文档,无需支付企业费用,这应该可行
你需要使用json_decode
然后return数组的第三层。
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];
}
returned JSON是两层中的,翻译后的值是第一个值。所以你需要 [0][0]
才能达到正确的水平,然后 [0]
才能获得价值。
如果您不确定要访问什么,您可以随时在 Translate
函数中对 $array
值使用 print_r
来查看它包含的内容。