使用file_get_contents获取属性的值

时间:2018-07-03 21:52:52

标签: php domdocument file-get-contents

我想从特定链接获取属性href的值。

我要在其中获取值的html代码如下:

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

我想拥有内部href(mailto:mail@xy.com),但是我获得了链接的价值(某些链接)。

以下是代码:

$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>';
    }
}

3 个答案:

答案 0 :(得分:2)

那呢:

$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>";
    }
}

答案 1 :(得分:0)

只需使用一个子字符串作为当前值即可:

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

我不喜欢7这样的魔术数字,但是它是“ mailto:”的长度。如果需要,请替换为变量。

答案 2 :(得分:0)

您要访问的是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')并将其存储在变量中。