假设网页中有一堆带有各种类名的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');
答案 0 :(得分:1)
如果该类完全是蓝色(不是class="blue some-other-class"
,则可以使用getAttribute
的{{1}}方法检查该类是否等于蓝色:
$link
答案 1 :(得分:1)
使用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'))))
如果您知道XPath,应该有一种方法可以立即编写一个同时与标记和类匹配的表达式,但是我从不费心地学习XPath。