这是一个PHP代码,必须从网页获取信息并回显它。 在网页上有3个div,其类名是" skaties-starfm-songs-column"在每一个中都有一个ul。我的目标是回应第一个" skaties-starfm-songs-column"中所有的li。但我不知道该怎么做。
网页html代码: 我不能将这个作为代码发布,因为在其内部是巨人。
<?php
include_once 'includes/db.inc.php';
include_once 'includes/simple_html_dom.php';
include_once 'includes/curl_init.php';
$html=curl_get('https://skaties.lv/starfm/dziesmu-top/');
$dom = new DOMDocument();
$dom = str_get_html($html);
$songs=$dom->find('.skaties-starfm-songs-column');
foreach ($songs->getElementsByTagName('ul')->getElementsByTagName('li') as $a) {
echo $a;
}
<?
此代码发布和错误&#34;致命错误:在数组&#34;上调用成员函数getElementsByTagName()。
<?php
include_once 'includes/db.inc.php';
include_once 'includes/simple_html_dom.php';
include_once 'includes/curl_init.php';
$html=curl_get('https://skaties.lv/starfm/dziesmu-top/');
$dom = new DOMDocument();
$dom = str_get_html($html);
$songs=$dom->find('.skaties-starfm-songs-column');
foreach ($songs as $a) {
echo $a;
}
?>
这段代码回应了所有3个div,里面包含了所有内容。
答案 0 :(得分:0)
显然,$ songs是一系列div。如果你只需要第一个,那么使用索引:
$songs[0]->getElementsByTagName('ul');
在此之前检查$ songs数组是否为空是个好主意:
if (!empty($songs)) {
$songs[0]->getElementsByTagName('ul');
}
请注意, DOMDocument :: getElementsByTagName 方法返回类似集合的DOMNodeList对象。因此,如果您想要一些特定的,那么您应该使用DOMNodeList::item方法:
$myLists = $songs[0]->getElementsByTagName('ul');
// get only the first UL element
$firstList = $myLists->item(0);
foreach ($firstList->getElementsByTagName('li') as $a) {
echo $a;
}
// or walk through all of them
foreach ($myLists as $list) {
foreach ($list->getElementsByTagName('li') as $a) {
echo $a;
}
}