PHP DOM 获取属性操作

PHP DOM getattribute manipulation

我正在努力寻找以下问题的答案...我怀疑我真的不知道我在问什么或如何问...让我描述一下:

我想从页面中获取一些链接。我只想要包含以下单词的链接作为 URL 的一部分:"advertid"。因此,例如,URL 类似于 http://thisisanadvertis.com/questions/ask.

我已经走到这一步了

                <?php
// This is our starting point. Change this to whatever URL you want.
$start = "https://example.com";

function follow_links($url) {
    // Create a new instance of PHP's DOMDocument class.
    $doc = new DOMDocument();
    // Use file_get_contents() to download the page, pass the output of file_get_contents()
    // to PHP's DOMDocument class.
    @$doc->loadHTML(@file_get_contents($url));
    // Create an array of all of the links we find on the page. 
    $linklist = $doc->getElementsByTagName("a");
    // Loop through all of the links we find.
    foreach ($linklist as $link) {
        echo $link->getAttribute("href")."\n";
    }
}
// Begin the crawling process by crawling the starting link first.
follow_links($start);
        ?>

此 returns 页面上的所有 URL...没问题。因此,为了尝试获得我想要的 URLs,我尝试了一些方法,包括尝试修改 getattribute 部分:

echo $link->getAttribute("href"."*advertid*")."\n";

我已经尝试了一些东西...但无法得到我想要的。有人能给我指出正确的方向吗,我有点卡住了。

非常感谢。

foreach ($linklist as $link) {
   if (strpos($link->getAttribute("href"), 'advertid') !== false) {
       echo $link->getAttribute("href")."\n";
   }
}

你可以检查 href 属性是否有你想要的信息,有一些逻辑,视情况而定:

foreach ($linklist as $link) {
    if(strpos($link->getAttribute("href"), 'advertid') >= 0) {
        echo $link->getAttribute("href")."\n";
    }
}

我建议你使用 PHP 函数 strpos

strpos 至少有两个参数,第一个是你要搜索的字符串。第二个参数是你要在第一个字符串中查找的内容。

strpos returns 找到字符串的位置,如果找不到则返回 false。

所以你的循环看起来像:

foreach ($linklist as $link) {
    if( strpos($link->getAttribute("href"), 'advertid') !== false ){
       echo $link->getAttribute("href")."\n";
    }
}
$links = []
foreach ($linklist as $link) {
    $href = $link->getAttribute("href");
    if (preg_match('/.*advertid.*/', $href)) {
        array_push($links, $href);
    }
}