2017-10-06 88 views
0

我试图在PHP表中显示JSON内容,但它不工作。我无法弄清楚我应该改变什么。在PHP表中显示JSON信息

这里是我的代码:

<html> 
<head> 
<title>Download</title> 
</head> 
<body> 
<?php 
$myData = file_get_contents("https://youtubetoany.com/@api/json/videostreams/VEou0QBeHlk"); 
$myObject = json_decode($myData); 
$myObjectMap = $myObject->vidInfo; 
?> 
<table> 
<thead> 
    <tr> 
     <td>Url</td> 
     <td>Size</td> 
     <td>Quality</td> 
     <td>Type</td> 
    </tr> 
</thead> 
<tbody> 
    <?php foreach($myObjectMap as $key => $item): ?> 
    <tr> 
     <td><?PHP echo $item->dloadUrl; ?></td> 
     <td><?PHP echo $item->rSize; ?></td> 
     <td><?PHP echo $item->round; ?></td> 
     <td><?PHP echo $item->quality; ?></td> 
     <td><?PHP echo $item->ftype; ?></td> 
    </tr> 
    <?php endforeach; ?> 
</tbody> 
</table> 

</body> 
</html>  

这是我在浏览器中得到:

URL大小品质类型

+1

该URL返回格式不正确的字符串,并且与JSON不兼容。使用应用程序,如邮递员检查内容,它会抛出'语法错误'。 Postman –

+0

您可以尝试在json_decoding之前的第一个

1

我只是发现也许就是为什么它不工作。该链接返回附加到JSON底部的JavaScript。所以这是我的解决方案。

<html> 
 
<head> 
 
<title>Download</title> 
 
</head> 
 
<body> 
 
<?php 
 
$myData = file_get_contents("https://youtubetoany.com/@api/json/videostreams/VEou0QBeHlk"); 
 

 
// This up to the last occurrence of the "}" 
 
$json_block = substr($myData, 0, strripos($myData, "}")); 
 

 
$myObject = json_decode($json_block); 
 
$myObjectMap = $myObject->vidInfo; 
 
?> 
 
<table> 
 
<thead> 
 
    <tr> 
 
     <td>Url</td> 
 
     <td>Size</td> 
 
     <td>Quality</td> 
 
     <td>Type</td> 
 
    </tr> 
 
</thead> 
 
<tbody> 
 
    <?php foreach($myObjectMap as $key => $item): ?> 
 
    <tr> 
 
     <td><?PHP echo $item->dloadUrl; ?></td> 
 
     <td><?PHP echo $item->rSize; ?></td> 
 
     <td><?PHP echo $item->round; ?></td> 
 
     <td><?PHP echo $item->quality; ?></td> 
 
     <td><?PHP echo $item->ftype; ?></td> 
 
    </tr> 
 
    <?php endforeach; ?> 
 
</tbody> 
 
</table> 
 

 
</body> 
 
</html>

+0

在流末尾有一个'}'右边:'),0,{}));'。所以我怀疑这会成功。 – Jeff

+0

更好地搜索第一个' Jeff

+0

@Jeff我打算这么做,但是如果原始文件不再有'script'标记,那可能会引发错误。这在更安全的解决方案。加'strripos'使用文件上的最后一个事件。唯一的问题是如果在脚本中有一个'}'。在这种情况下,你的方式更好或正则表达式可能会发挥 –