2017-10-06 3 views
0

J'essaie d'afficher le contenu JSON dans une table PHP mais cela ne fonctionne pas. Je ne peux pas comprendre ce que je devrais changer.Afficher les informations JSON dans une table PHP

Voici mon code:

<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>  

C'est ce que je reçois dans mon navigateur:

Url Taille Qualité Type

+1

Cette URL renvoie une chaîne mal formatée et n'est pas compatible avec JSON. Utilisez une application telle que Postman, vérifiez le contenu et lancez "Syntax error". Postman –

+0

vous pourriez essayer de tout couper après le (et y compris) le premier ' Jeff

Répondre

1

Votre source a javascript ci-joint. Vous devez vous débarrasser de cette:

$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); 

MAIS cette source ne semble pas être fait à saisir. Donc, je ne vais pas compter sur cette source ou sur le fait que cela restera comme vous le voyez maintenant.

1

Je viens de découvrir sans doute pourquoi sa ne fonctionne pas. Le lien renvoie un JavaScript attaché au bas du JSON. Alors voici ma solution.

<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

il y a un '}' à la fin du flux: '), 0, {}));'. Donc je doute que cela réussisse. – Jeff

+0

meilleure recherche pour le premier ' Jeff

+0

@Jeff J'allais faire cela, mais dans le cas où le fichier original n'a plus de balises' script', cela pourrait renvoyer des erreurs. Ceci dans une solution beaucoup plus sûre. Plus 'strripos' utilise la dernière occurrence sur le fichier. Seul problème serait s'il & est un '}' avec dans le script. Dans ce cas, votre chemin est meilleur ou regex pourrait entrer pour jouer –