我是PHP的新手,并试图为网站编写一个剪贴簿。
我正在尝试获取具有类名称类别的元素。我用了
$showPage = '<li class="categories">Categories<ul> <li class="cat-item cat-item-940"><a href="http://www.desitvbox.me/category/star-plus/amul-taste-of-india/" >Amul Taste of India</a>
</li>
<li class="cat-item cat-item-942"><a href="http://www.desitvbox.me/category/star-plus/dance-plus/" >Dance Plus</a>
</li>
<li class="cat-item cat-item-239"><a href="http://www.desitvbox.me/category/star-plus/diya-aur-baati-hum-star/" >Diya Aur Baati Hum</a>
</li>
<li class="cat-item cat-item-745"><a href="http://www.desitvbox.me/category/star-plus/suhani-si-ek-ladki/" >Suhani Si Ek Ladki</a>
</li>
<li class="cat-item cat-item-147"><a href="http://www.desitvbox.me/category/star-plus/star-plus-completed-shows/" >Star Plus Completed Shows</a>
<ul class="children">
<li class="cat-item cat-item-772"><a href="http://www.desitvbox.me/category/star-plus/star-plus-completed-shows/airlines/" >Airlines</a>
</li>
<li class="cat-item cat-item-518"><a href="http://www.desitvbox.me/category/star-plus/star-plus-completed-shows/arjun/" >Arjun</a>
</li>
<li class="cat-item cat-item-237"><a href="http://www.desitvbox.me/category/star-plus/star-plus-completed-shows/chef-pankaj-ka-zayka/" >Chef Pankaj Ka Zayka</a>
</li>
</ul>
</li>
</ul></li>';
$dom = new DOMDocument();
$dom->validateOnParse = true;
$dom->loadHTML($showPage);
$dom->preserveWhiteSpace = false;
$allShowsList = new DOMXPath($dom);
$allShowsTableHTML = $allShowsList->query('//li[contains(@class, "categories")]');
但是,我想现在读取$ allShowsTableHTML中提到的所有href的值。
你能告诉我该怎么办?
正如你所看到的,记录中也有ul class ='childern'。我也想读。
我需要获得href和标题。
我试过以下但没有结果。
$allShowTableDom = new DOMDocument();
foreach ($allShowTableHTML as $showLink)
{
$allShowTableDom->appendChild($allShowTableDom->importNode($showLink,true));
}
$showsArray = $allShowsTableHTML->getElementsByTagName('a');
我认为它不会进入foreach循环。
答案 0 :(得分:0)
要获取超链接的所有href
属性,请添加更多轴步骤,最后遍历结果列表,其中->value
属性将包含URI。
鉴于您可以将所有href
个属性转储到整个<li>
元素中,只需按//a/@href
扩展您的查询:
$document = new DOMXPath($dom);
$hrefs = $document->query('//li[contains(@class, "categories")]//a/@href');
foreach ($hrefs as $href) {
echo $href->value;
}
如果这包含您不想获取的节点,您还可以下载包含未排序列表并选择更具体的查询:
//li[contains(@class, "categories")]/ul/li/a/@href