在PHP表中显示JSON信息

时间:2017-10-06 22:40:30

标签: php html json parsing html-table

我试图在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>    

这是我在浏览器中获得的内容:

  

网址尺寸质量类型

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

您的来源附加了一些JavaScript。你需要摆脱它:

$myData = file_get_contents("https://youtubetoany.com/@api/json/videostreams/VEou0QBeHlk");

// get the substring from start til the first occurence of "<script"
$myRealData = substr($myData,0,strpos($myData,"<script"));
$myObject = json_decode($myRealData);

但是这个来源似乎没有被抓住。所以我不会依赖那个来源,或者它会保持你现在找到它的方式。