使用domdocument查找具有特定类名称的所有HREF

问题描述 投票:0回答:2

假定一个网页中有一堆带有各种类名的href,如:

<a href="http://example.com/redlink1"   class="red">link </a>
<a href="http://example.com/bluelink2"  class="blue">link </a>
<a href="http://example.com/greenlink3" class="green">link </a>
<a href="http://example.com/redlink4"   class="red">link </a>
<a href="http://example.com/bluelink5"  class="blue">link </a>
<a href="http://example.com/greenlink6" class="green">link </a>

并且我已经将html页面加载到dom.document中。

我可以通过此循环提取所有“ A”标签,然后显示HREF值

foreach($dom->getElementsByTagName('a') as $link) {
    // Show the <a href>
    echo $link->getAttribute('href') . "<br>";
}

但是如何只获得那些具有'blue'类名的HREF链接?这在FOREACH中不起作用:

$blue_class_links[] = $link->getElementByClass('blue');
php dom
2个回答
0
投票

如果类完全是蓝色(不是class="blue some-other-class",则可以使用getAttribute$link方法检查类是否等于蓝色:

foreach($dom->getElementsByTagName('a') as $link) {
    // Show the <a href>
    if ($link->getAttribute("class") == "blue") {
        echo $link->getAttribute('href') . "<br>";
    }
}

0
投票

使用getAttribute('class')获取课程。

foreach($dom->getElementsByTagName('a') as $link) {
    if ($link->getAttribute('class') == "blue") {
        echo $link->getAttribute('href') . "<br>";
    }
}

如果它可以有多个类别,则需要将其拆分并搜索。

if (in_array("blue", explode(' ', $link->getAttribute('class'))))
© www.soinside.com 2019 - 2024. All rights reserved.