使用包含域的href查找特定的getElementsByTagName(' a')

时间:2015-05-28 19:13:37

标签: php dom

我正在使用DOM查找特定域中与特定域相关的所有链接。到目前为止,这个脚本工作得很好,除了它遍历该页面上的每个链接。我想要做的是尽量减少开销,直接找到包含域名一部分的任何链接<a>,这样它只能获取这些链接并忽略其余的链接。

$anchors = $doc->getElementsByTagName('a');获取所有链接,我可以在这里做些什么来获取包含例如google.com网址的href的链接,这样其他脚本只关注那些链接?

$url = "http://en.wikipedia.org/wiki/Scrabble";
$input = @file_get_contents($url) or die("Could not access file: $url");
$doc = new DOMDocument();
$doc->loadHTML($input);
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $node) {
    echo $node->textContent;
    if ($node->hasAttributes()) {
        foreach($node->attributes as $a) {
            echo ' | '.$a->name.': '.$a->value;
            echo "<br>";
        }
        echo "<br><br>";
    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用xpath仅选择所需的项目

$xpath = new DOMXpath($doc);
$anchors = $xpath->query("//a[contains(@href, 'google.com')]");    
// $anchors = $doc->getElementsByTagName('a');
foreach($anchors as $node) {