2013-06-25 74 views
0

當準備做下面的事情時,我發現很多信息都不清楚,所以我以爲id會問這個問題,看看有人能夠爲我清除一些東西。解析HTML幾張表DOM

究竟是@符號做以下

$domOb = new DOMDocument(); 
$html = @$domOb->loadHTMLFile('http:...'); 

這並刪除錯誤和實際分析數據,但就是這個一個很好的做法解決方案。我沒有使用@符號,並得到了預期的結果。

既然我有幾個表,什麼是最好/ simplist辦法讓所有的<td>從可以說表3.我要列出所有<td>,然後簡單地啓動和與所需的相關值結束數據

如果希望通過PHP解析HTML,我喜歡使用DOM的想法,因此在獲取文件時應該使用什麼。 loadHTMLFile()loadHTML() ...我仍然可以使用Xpath嗎?...如果它非常繁忙/標記嚴重的HTML會怎樣?

請告訴我通過數據

$items = $domOb->getElementsByTagName('td'); 

    $k = 0; 
    $num = $items->length; 
    while ($k < $num) 
    { 
     echo $item_web = $items->item($k)->, '<br>'; 
     $k++; 
    } 

尋找好的做法,我發現這是很好的How do you parse and process HTML/XML in PHP?但其2歲的,所以我想ID提出幾個問題。

只是第三張桌子的一個小剪輯...乍一看,我注意到在第三個標籤的空間是否會影響結果?

<td>Parcel ID: <a href=... style=text-decoration:underline;><b>666666</b></a></td> 
<td>Name: Mr. help</td></tr><tr> 
<td >Parcel Address: 666 help RD&nbsp;</td> 
<td>Name2: Ms. help F</td></tr><tr><td>City: Helpover 66666</td> 
<td>Address: 6666 6TH AVE NE UNIT 333</td> 
+0

如果你熟悉的jQuery,你可能會喜歡[phpQuery(https://code.google.com/p/phpquery/)。我知道,當我必須選擇深度嵌套的節點並希望開發孩子/父母/兄弟姐妹關係時,我不想爲它創建框架。 – Ohgodwhy

+0

Stackoverflow一次提問一個問題(最好)。因此,我只回答了關於錯誤抑制操作符的那個。關於HTML表格解析我們已經有一些與DOM相關的資源,但是我認爲到目前爲止我們還沒有答案提供基於DOM的表格模型。不過,我會說這需要一個孤立的問題。剩下的:Xpath解釋說,只有2歲的問題沒有理由再次提出。只是說。 – hakre

回答

0

究竟是@符號做以下

它應該抑制的錯誤,但是這不是做它的DomDocument和相關擴展的正確途徑。在加載格式錯誤的HTML之前,正確的方法是調用libxml_use_internal_errors(true);

我還可以使用Xpath嗎?

是:

$xpath = new DomXPath($domOb); 
$tds = $xpath->query('//td'); 

我注意到在第三屆標籤的空間這並不影響結果?

實體在您從TD節點訪問textContent屬性時進行轉換。

0

這個[@ error control operator]沒有刪除錯誤,實際上解析數據,但這是一個很好的實踐解決方案。我沒有使用@符號,並得到了預期的結果。

它不會刪除錯誤,它會忽略它,例如,錯誤級別將被設置爲0,並且如果打開顯示錯誤,則不會顯示該錯誤。但是它仍然存在,如果使用錯誤處理程序,仍然會被處理。

正如你可以想象的,這不是一個好習慣。避免它,如果你看到代碼有它,請放心,它的質量較低。見還有: