Я пытаюсь использовать API Google Trnslation для перевода некоторых текстов с английского на голландский. У меня есть следующий код: —
$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
Удалите повторяющиеся запятые с помощью регулярных выражений. Затем закодируйте / проанализируйте в 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]);
});
Использовать Json Decode (принимает строку в кодировке JSON и преобразует ее в переменную PHP)
var_dump(json_decode($content)); //Output is object variable
var_dump(json_decode($content, true)); //Output is array variable