2014-10-01 49 views
2

我试图从Google的非官方词典API中获得单词的同义词,但我无法弄清楚如何选择我想要的数据。这是我使用的网址:从谷歌的非官方词典API中获取数据

$url = 'https://www.googleapis.com/scribe/v1/research?key=AIzaSyDqVYORLCUXxSv7zneerIgC2UYMnxvPeqQ&dataset=dictionary&dictionaryLanguage=en&query=hello' 

那么我这样做:

$data = file_get_contents($url); 
echo $data; 

一切正常返回,但作为一个字符串,所以我不能弄清楚如何同义词隔离。我试过simplexml_load_file($url);,但我无法获得任何回应/打印。

回答

2

这是你想要的代码:

<?php 
function object_to_array($data) 
{ 
    if (is_array($data) || is_object($data)) 
    { 
     $result = array(); 
     foreach ($data as $key => $value) 
     { 
      $result[$key] = object_to_array($value); 
     } 
     return $result; 
    } 
    return $data; 
} 

function getSynonims($word) 
{ 
    $url = 'https://www.googleapis.com/scribe/v1/research?key=AIzaSyDqVYORLCUXxSv7zneerIgC2UYMnxvPeqQ&dataset=dictionary&dictionaryLanguage=en&query='.$word; 
    $ret = null; 
    $data = file_get_contents($url); 
    $data = object_to_array(json_decode($data)); 
    if (isset($data['data'][0]['dictionary']['definitionData']['0']['meanings'][0]['synonyms'])) 
     $synonyms = $data['data'][0]['dictionary']['definitionData']['0']['meanings'][0]['synonyms']; 
    foreach ($synonyms as $key => $synonym) { 
     $ret[$key] = $synonym['nym']; 
    } 
    return $ret; 
} 

例如

$word = 'house'; 
print_r(getSynonims($word)); 

输出

Array 
(
    [0] => residence 
    [1] => home 
    [2] => place of residence 
) 

有用

1

它是JSON,所以对其进行分析,如:

$data = json_decode($url); 

See PHP docs on json_decode

此外,您可以使用这个超级有用的工具jsonlint.com来检查该字符串是否会解析为正确的JSON。