我想从一个特定的链接中获取属性href的值。
我想要获取值的html代码如下所示:
<a href="mailto:mail@xy.com">Some link</a>
我想要内部的href (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>';
}
}
发布于 2018-07-04 05:58:09
这样如何:
$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>";
}
}
发布于 2018-07-04 05:59:38
只需使用当前值的子字符串:
echo '<tr><td>' . substr($node->getAttribute('href'),7) . '</td></tr>';
我不喜欢像7这样的魔术数字,但它是"mailto:“的长度。如果愿意,可以替换为变量。
发布于 2018-07-04 06:03:15
您想要访问的是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')
一次,并将其存储在一个变量中。
https://stackoverflow.com/questions/51163267
复制相似问题