使用 file_get_contents 获取属性值

Get value of Attribute using file_get_contents

我想从特定的 link.

获取属性 href 的值

我想要获取值的 html 代码如下所示:

<a href="mailto:mail@xy.com">Some link</a>

我想要内部 href (mailto:mail@xy.com) 但我得到了 link 的值(有些 link)。

代码如下:

$content = file_get_contents($url);

$dom = new domdocument();
$dom->loadhtml($content);


$nodes = $dom->getElementsByTagName('a');
foreach( $nodes as $node ) {
    if( strpos($node->getAttribute('href'), 'mailto') !== false ) {
        echo '<tr><td>' . $node->nodeValue . '</td></tr>';
    }
}

这个怎么样:

$content = file_get_contents($url);
$dom = new domdocument();
$dom->loadhtml($content);
$nodes = $dom->getElementsByTagName('a');
foreach( $nodes as $node ) {
    $nodehref = $node->getAttribute('href');
    if( strpos($nodehref, 'mailto') !== false ) {
        echo "<tr><td>$nodehref</td></tr>";
    }
}

只需对您的当前值使用一个子字符串:

echo '<tr><td>' . substr($node->getAttribute('href'),7)  . '</td></tr>';

我不喜欢7这样的神奇数字,但是"mailto:"的长度。如果需要,请替换为变量。

您要访问的是 href 属性,您已经正确使用该属性作为 strpos() 的参数。但是,在您的回声中,您使用的是 <a> 元素的值(即 nodeValue())。 W3CSchool 在这方面有一些 short information 值得一读。

这应该有效:

$nodes = $dom->getElementsByTagName('a');
foreach( $nodes as $node ) {
    if( strpos($node->getAttribute('href'), 'mailto') !== false ) {
        echo '<tr><td>' . $node->getAttribute('href') . '</td></tr>';
    }
}

或者,您可以只调用 $node->getAttribute('href') 一次并将其存储在变量中。