2009-12-03 105 views
0

我不能讓標籤之間的數據放入數組:解析HTML用PHP

// Load the HTML string from file and create a SimpleXMLElement 
$html_string = file_get_contents("data/csr.html"); /*the string really is in $html_string*/ 
$root = new SimpleXMLElement($html_string); 

問題就在這裏開始時,我試圖獲取標籤之間的值:和DIV,H2跨越到一個數組

// Fetch all div, h2 and span values 
$divArray = $hdlsArray = $dtlsArray = array(); 
    foreach ($root->div as $div) { 
    $divArray[] = $div; 
    echo "".$div."<br />"; 
} 
foreach ($root->h2 as $h2) { 
    $hdlsArray[] = $h2; 
    echo "".$h2."<br />"; 
} 
foreach ($root->span as $span) { 
    $dtlsArray[] = $span; 
    echo "".$span."<br />"; 
} 

這樣做的結果是一個空白頁,而不是打印(約SimpleXML的)實際標籤數據

回答

1

This page說:「它唯一的問題是,它只會重新加載有效的XM L「,但可能會爲HTML提供解決方法。

StackOverflow的'相關問題'包括this one,但它描述了有效的XML標籤中的HTML

+0

這看起來像我嘗試simplexml之前的舊代碼。此外,它返回錯誤(新的DOMDocument)。我知道的錯誤是因爲一些與zend擴展衝突。這就是我使用simplexml代替的原因。 只需要將標籤之間的內部數據轉換爲數組。 – megatr0n 2009-12-03 06:05:26

+0

對我來說不幸的是,最後一個鏈接與我在這裏想要完成的事情沒有什麼關係,但我真的很喜歡你的精神。 – megatr0n 2009-12-03 06:29:51

2

作爲SimpleXMLElement的替代品,我建議Simple HTML DOMonline manual)。我以前用過它,對結果非常滿意。它允許你像選擇器一樣使用jQuery,因此提取所有div,h2和span值非常簡單。

+0

我真的不想去第三方,但我想現在它似乎是最好的選擇。謝謝。 – megatr0n 2009-12-03 08:21:14

+1

其開源! – 2009-12-03 14:07:01