2011-07-12 23 views
2

我想從一些數據使用PHP的domDocument從URL拉href。Dom節點爲PHP查找href屬性問題

以下拉該URL的錨,但我想要的網址

$events[$i]['race_1'] = trim($cols->item(1)->nodeValue); 

下面是更多的代碼,如果有幫助。

// initialize loop 
    $i = 0; 
    // new dom object 
    $dom = new DOMDocument(); 

    //load the html 
    $html = @$dom->loadHTMLFile($url); 
    //discard white space 
    $dom->preserveWhiteSpace = true; 

    //the table by its tag name 
    $information = $dom->getElementsByTagName('table'); 
    $rows = $information->item(4)->getElementsByTagName('tr'); 

    foreach ($rows as $row) 
    { 
    $cols = $row->getElementsByTagName('td'); 
    $events[$i]['title'] = trim($cols->item(0)->nodeValue); 
    $events[$i]['race_1'] = trim($cols->item(1)->nodeValue); 
$events[$i]['race_2'] = trim($cols->item(2)->nodeValue); 
$events[$i]['race_3'] = trim($cols->item(3)->nodeValue); 
$date = explode('/', trim($cols->item(4)->nodeValue)); 
$events[$i]['month'] = $date['0']; 
$events[$i]['day'] = $date['1']; 
$citystate = explode(',', trim($cols->item(5)->nodeValue)); 
$events[$i]['city'] = $citystate['0']; 
$events[$i]['state'] = $citystate['1']; 
$i++; 
    } 
    print_r($events); 

這裏是TD標籤的內容

<td width="12%" align="center" height="13"><!--mstheme--><font face="Arial"><span lang="en-us"><b> 
      <font style="font-size: 9pt;" face="Verdana"> 
      <a linkindex="18" target="_blank" href="results2010/brmc5k10.htm">Overall</a>  

回答

4

更新,我看這個問題。您需要從td獲取a元素的列表。

$cols = $row->getElementsByTagName('td'); 
// $cols->item(1) is a td DOMElement, so have to find anchors in the td element 
// then get the first (only) ancher's href attribute 
// (chaining looks long, might want to refactor/check for nulls) 
$events[$i]['race_1'] = trim($cols->item(1)->getElementsByTagName('a')->item(0)->getAttribute('href'); 

敢肯定,你應該能夠調用getAttribute()上的項目。您可以驗證該項目是nodeType XML_ELEMENT_NODE;如果該項目不是DOMElement,它將返回一個空字符串。

<?php 
// ... 
$events[$i]['race_1'] = trim($cols->item(1)->getAttribute('href')); 
// ... 
?> 

參見相關:DOMNode to DOMElement in php

+0

這將返回一個空字符串,但我不明白爲什麼,我已經加入了TD標籤的內容上面也許幫助 –

+0

這可能是因爲'$ cols->項目(1)'不是DOMElement。做一個'var_dump($ cols-> item(1) - > nodeType == XML_ELEMENT_NODE);'看看它是否是。 –

+0

返回bool(true)。 –