我想从特定链接获取属性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>';
}
}
答案 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')
并将其存储在变量中。