PHP DOM getattribute操作

时间:2018-10-11 19:54:53

标签: php getattribute

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

我想从页面中获取一些链接。我只希望链接中包含以下单词的链接:“ 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);
        ?>

这将返回页面上的所有URL ...确定。因此,为了获取我想要的URL,我尝试了一些尝试,包括尝试修改getattribute部分:

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

我已经尝试了几件事...但是无法得到我想要的东西。有人能指出我正确的方向吗?我有些困惑。

非常感谢。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

根据情况,您可以根据逻辑判断href属性是否具有所需的信息:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我建议您使用PHP函数strpos

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

strpos返回字符串的位置(如果找到),或者返回false(如果找不到)。

所以您的循环看起来像:

    /// Updates the left + right padding of the current text view.
    /// -> leftRightPadding value = 11.0
    func updateLeftRightPadding() {
        let leftPadding = UIBezierPath(rect: .init(x: 0.0, y: 0.0,
                                       width: leftRightPadding, height: contentSize.height))
        let rightPadding = UIBezierPath(rect: .init(x: frame.width - leftRightPadding, y: 0.0,
                                        width: 11, height: contentSize.height))
        textContainer.exclusionPaths = [leftPadding, rightPadding]
    }