【问题标题】:How to parse JSON from MyMemory translation with PHP?如何使用 PHP 从 MyMemory 翻译中解析 JSON?
【发布时间】:2012-04-28 00:43:09
【问题描述】:

由于 Google Translate API 不再免费,我尝试从 http://mymemory.translated.net/doc/spec.php 获取翻译

以我的 PHP 页面为例

header("Cache-Control: no-cache");
header("Pragma: no-cache");
header('Content-type: application/json');
$_POST['value']=="Hello everybody";
// URI to get italian from english
$translate_it=json_decode(file_get_contents("http://mymemory.translated.net/api/get?q=".$_POST['value']."&langpair=en|it"));

我不是对象开发者,也不知道如何访问数据...

我怎样才能从中只获得“翻译”字段? http://mymemory.translated.net/api/get?q=Hello%20everybody&langpair=en|it

【问题讨论】:

    标签: php json translation


    【解决方案1】:

    您收到错误是因为您使用的是echo

    要查看内容,请尝试使用:

    var_dump($translate_it);
    

    使用新的 json 变量的一种方法是这样的

    $translate_it->responseData;
    

    这是一个翻译:

    echo $translate_it->matches[0]->translation;
    

    更新:

    您可以使用 for each 循环匹配:

    foreach ($translate_it->matches[0] as $obj){
       echo $obj->translation;
    }
    

    【讨论】:

    • 谢谢,但是如何获得翻译?如何构建方式? $translate_it->responseData['translation']; ?
    • @Valky 看到我的最后一行。您将不得不通过匹配数组来查看您需要的数据。使用var_dump($translate_it) 作为参考
    • 完美,我明白了...如何执行 foreach() 来查看所有匹配项 [] 翻译?
    • 非常感谢,我已经检查了你的答案
    【解决方案2】:

    json_decode 会,但默认返回一个对象 - stdClass。第二个(可选)参数将让它返回一个数组。无论哪种方式,解码后都不仅仅是一个简单的字符串。

    print_r($translate_it)var_dump($translate_it) 将显示对象或数组的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 2011-10-26
      • 2015-08-12
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多