来自php网页的回声文本

时间:2014-03-09 11:50:49

标签: php

我在网页上有一些文字需要在我的php页面中回显'。

如果文字是这样的

"translatedText":"Ciao mondo"

我使用这个PHP代码

<?php 
$tr=translatedText; 
$Text=file_get_contents("http://mymemory.translated.net/api/get?langpair=en|it&q=Hello%20World!"); 
$regex = "/".$tr."=\"([^\"]+)\"/"; 
preg_match_all($regex,$Text,$Match); 
$fid=$Match[1][0]; 
echo $fid; 
?>

结果很好

Ciao mondo

但如果文字就像这个

{"translatedText":"Ciao mondo"}

我没有任何结果 如何提取

  

Ciao mondo

来自那里的文字?

5 个答案:

答案 0 :(得分:0)

使用json_decode

$var = '{"translatedText":"Ciao mondo"}';

var_dump(json_decode($var));

输出:

object(stdClass)#1 (1) {
  ["translatedText"]=>
  string(10) "Ciao mondo"
}

WORKING DEMO

或没有stdClass;

  var_dump(json_decode($var, true));

WORKING DEMO

输出

array(1) {
  ["translatedText"]=>
  string(10) "Ciao mondo"
}

答案 1 :(得分:0)

这种结构名为JSON,不仅仅是字符串。

...
$tr = json_decode($Text,TRUE);
echo $tr["translatedText"];
...

您需要验证字符串是否包含在{..}中,否则您的JSON将无效,因此解码将失败。

<强>更新

根据您收到的JSON,您应该这样做:

$tr = json_decode($Text,TRUE);
echo $tr["responseData"]["translatedText"];

答案 2 :(得分:0)

使用json_decode,但解码为数组:

<?php
$response = file_get_contents('http://mymemory.translated.net/api/get?langpair=en|it&q=Hello%20World!');
$array = json_decode($response,1);

echo $array['responseData']['translatedText'];

你也可以:

var_dump($array);

了解整个数组的外观。

答案 3 :(得分:0)

您可以使用json_decode:

$Text = json_decode($Text);
echo $Text['translatedText'];

或假设大括号仅作为字符串的第一个和最后一个字符出现,您可以在preg_match_all之前尝试:

echo substr($Text, 1, -1);

答案 4 :(得分:-2)

使用JSON_DECODE

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>