2017-02-09 45 views
0

我正在尝试使用google翻译apis将一些英文文本翻译成荷兰文。我有以下代码: -如何从translate.googleapis.com以json格式获取数据?

$text = urlencode($text); 
$from_lan = 'en'; 
$to_lan = 'nl'; 
$url = "https://translate.googleapis.com/translate_a/single?client=p&sl=".$from_lan."&tl=".$to_lan."&dt=t&q=".$text; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$content = curl_exec($ch); 
print_r($content); 

这我得到的数据: -

[[["uitzicht","view",,,2]],,"en"] 

这不是数组或JSON数据。它是字符串。我怎样才能得到JSON格式的数据

+0

它不是阵列或JSON数据。它看起来像数组 –

+0

如果输出是数组,然后使用json_encode()将字符串转换为json。 –

+0

数据实际上是带括号和大括号的字符串。 @Anant – Saswat

回答

0

使用正则表达式去除重复的逗号。然后编码/解析为json。这在JS中工作,但未在PHP中测试。

这里的JS/jquery的版本进行比较:

// error 
$.ajax({ 
    url: "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=nl&dt=t&q=view", 
    dataType: "text" 
    }) 
    .done(function(data) { 
    console.log(JSON.parse(data)[0][0][0]); 
    }); 

// works (replaces duplicate comma's with single ones) 
$.ajax({ 
    url: "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=nl&dt=t&q=view", 
    dataType: "text" 
    }) 
    .done(function(data) { 
    console.log(JSON.parse(data.replace(/,+/g, ","))[0][0][0]); 
    }); 
0

使用JSON解码(注意到一个JSON编码的字符串,并将其转换成一个PHP变量)

var_dump(json_decode($content)); //Output is object variable 
var_dump(json_decode($content, true)); //Output is array variable 
相关问题