2017-04-17 1 views
1

J'utilise PHP et simple HTML DOM Parser pour essayer de récupérer des paroles de chansons à partir d'un site Web. Les paroles de la chanson sont tenues dans un div avec la classe "paroles". Voici le code que j'utilise pour essayer de saisir le div et l'afficher. Actuellement, il ne renvoie que "Array" sur ma page Web. Quand je jsonify le tableau je peux voir que le tableau est vide.PHP Simple HTML DOM Parser retournant div comme un tableau

<?php 
include('simple_html_dom.php'); 
$data = file_get_contents("https://example.com/songlyrics"); 
$html = str_get_html($data); 
$lyr = $html->find('div.lyrics'); 
echo $lyr; 
?> 

Je sais que le simple HTML Dom Parser est inclus correctement, et je n'ai pas de problème l'affichage de la page Web complète quand j'echo $ html avec quelques petites modifications au code, semblent cependant je ne peux pas faire écho juste ce div. Y at-il un problème avec mon code? Pourquoi $ lyr retourne un tableau?

+0

est probablement une collection de classes, pointez sur le premier élément, '-> find ('div.lyrics, 0')', attention au deuxième argument, puis 'echo' – Ghost

+0

@Ghost merci, cela a fonctionné. –

Répondre

1

Il n'y a rien de mal avec votre code.

Pourquoi $ lyr renvoie-t-il un tableau?

C'est parce qu'une classe est considérée comme étant utilisée plusieurs fois. Si vous var_dump($lyr) à la place, vous devriez voir tous les éléments div trouvés avec ce nom de classe. Vous pouvez utiliser echo $lyr[0] ou $html->find('div.lyrics',0) pour sélectionner un élément div spécifique.

+0

var_dump sera utile à l'avenir. Je ne connais pas très bien PHP, ce qui m'aurait permis de gagner un peu de temps. Le commentaire laissé par Ghost a déjà résolu mon problème, mais puisque c'est une réponse, je le marquerai comme correct. –

+0

Ce n'est pas tout à fait ça. 'find' renvoie toujours un tableau sauf si vous utilisez le second argument. C'est une chose déroutante à laquelle vous devez vous habituer. Aussi, n'utilisez pas var_dump, vous verrez pourquoi pas si vous l'essayez. – pguardiario

+0

@pguardiario Merci pour l'info. Je vois pourquoi ne pas utiliser var_dump maintenant lol. –