2017-04-17 140 views
1

我使用PHP和简单的HTML DOM解析器试图抓住网站上的歌词。歌词与类歌词“歌词”一起保存在一个div中。这里是我用来试图抓住div并显示它的代码。目前它只在我的网页上返回“Array”。当我对数组进行jsonify时,我可以看到数组是空的。PHP简单的HTML DOM解析器返回div作为数组

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

我知道简单的HTML DOM解析器被纳入正确,和我没有问题,显示完整的网页,当我回声$ HTML与一些小的修改代码,但是我似乎无法呼应只是这个div。我的代码有问题吗?为什么$ lyr返回一个数组?

+0

最有可能的是它的一个类的集合,指向第一个元素' - > find('div.lyrics,0')',介意第二个参数,然后'echo' – Ghost

+0

@Ghost谢谢,这很有效。 –

回答

1

你的代码没有问题。

为什么$ lyr返回一个数组?

这是因为一个类被认为是多次使用。如果你改为var_dump($lyr),你应该看到所有用这个类名找到的div元素。

您可以选择echo $lyr[0],也可以选择$html->find('div.lyrics',0)来选择特定的div元素。

+0

var_dump将来会很有用。我对PHP不太熟悉,这样可以节省一些时间。 Ghost留下的评论已经解决了我的问题,但既然这是一个答案,我会将其标记为正确。 –

+0

这并不完全。除非使用第二个参数,否则'find'总是返回一个数组。这是一个令人困惑的事情,你必须习惯。另外,不要使用var_dump,如果你尝试,你会看到为什么不。 – pguardiario

+0

@pguardiario感谢您的信息。我明白为什么不使用var_dump现在哈哈。 –