2013-09-26 37 views
0

转换我使用的是给了我一个很奇怪的JSON格式的API ..我张贴的数据,我得到通吧..如何将这个JSON数据在PHP

info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "f53762dab34022e9d851ab71e0bf166f" }; 

我米要打印在PHP这个数据,但我没能做到that..nothing是显示在我的网页,.... 我的代码是..

首先我想,

<?php 
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www"; 
$info=file_get_contents($url); 
$info=json_decode($info,true); 
echo $info; 
?> 

我的第二次尝试是,

<?php 
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www"; 
$info=file_get_contents($url); 
$info=json_decode($info,true); 
$info->h; 
?> 

我最后的尝试是,

<?php 
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www"; 
$info=file_get_contents($url); 
$info=json_decode($info,true); 
$info['h']; 
?> 

什么都没发生..

请有人帮助我

API地址转换...

+0

'$ url =“http://www.website-name.com/itemInfo/?video_id=IN7o2Iy89WQ&ac=www”;'这是发送一个JSON?你确定? –

+0

你可以'var_dump($ info);'在你的第二行和第三行后显示我们的输出? – TheWolf

+0

@SasankaPanguluri plaese现在检查.. – Kapil

回答

1

我得到的数据从你的例子中的网址是

info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "5cddd4d1667f24aa9a0f5a6cc21e24e3" }; 

这是一个可执行的JavaScript代码片段,实际上并不是JSON。你的PHP失败的原因是'info ='部分... json_encode在解码失败时返回null。

尽管这是一个JavaScript对象的变量赋值,但如果您删除了'info ='和分号,那么它也可以用作JSON。假设响应是可预测的,你可以用php str_replace来做到这一点,但是找到一个为你的源代码返回JSON的API将是一个更可靠和干净的解决方案。

+0

我认为你是对的....如何在JavaScript中做到这一点任何想法? – Kapil

0

如果您在获得NULLvar_dump($info)正如您在评论中提到的第二行,则file_get_contents()不会检索数据。

因为allow_url_fopen设置为false在php.ini

+0

获取错误警告:无效的参数提供了foreach()在第4行的/home/lpmqcrax/public_html/download/info.php – Kapil

2

该页面发送 "info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "058ce93db26fce4a9f1cb41ae2e7c1bb" };"

您不能在此使用json_decode因为info =;末不JSON这是最有可能的。你必须去掉info =;

$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www"; 
    $info = file_get_contents($url); 
    $info = trim($info, "info = "); 
    $info = rtrim($info, ";"); 
    $json = json_decode($info, true); 
    echo $json['status']; 
+0

得到错误...致命错误:不能使用stdClass类型的对象作为/ home/lpmqcrax中的数组/public_html/download/info.php on line 8 – Kapil

+0

@Kapil对不起,缺少json_decode的第二个参数。它现在有效:-) – Nico

+0

你让我的一天。谢谢.... – Kapil

0

获取JSON编码的字符串并将其转换为PHP变量。如果2nd参数设置为true,它将返回一个数组!

因此你的第一次和第二次尝试是错误的。它应该尝试第三次。只需检查您是否检索数据。