可能重复:
Regular expression for grabbing the href attribute of an A element
这会显示a
标记之间的内容,但我想要一种方法来获取href
内容。
有没有办法使用domDocument做到这一点?
$html = file_get_contents($uri);
$html = utf8_decode($html);
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
@$dom->loadHTML($html);
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the table by its tag name ***/
$tables = $dom->getElementsByTagName('table');
/*** get all rows from the table ***/
$rows = $tables->item(0)->getElementsByTagName('tr');
/*** loop over the table rows ***/
foreach ($rows as $row)
{
$a = $row->getElementsByTagName('a');
/*** echo the values ***/
echo $a->item(0)->nodeValue.'<br />';
echo '<hr />';
}
答案 0 :(得分:6)
距离答案只有几英寸 - 您已经提取了foreach循环中的<a>
标签。您正在DOMNodeList中抓取所有这些内容,因此该列表中的每个项目都是DOMElement的实例,其中有一个名为getAttribute的方法。
$a->item(0)->getAttribute('href')
将包含href属性的字符串值。多田!
您可能会获得一个空节点列表。您可以通过检查列表中的第一项是否为元素来解决此问题。
$href = null;
$first_anchor_tag = $a->item(0);
if($first_anchor_tag instanceof DOMElement)
$href = $first_anchor_tag->getAttribute('href');
答案 1 :(得分:0)
echo $a->getAttributeNode('href')->nodeValue."<br />";