當我嘗試使用simplexml_load_string
作爲XML加載HTML文件時,我收到很多有關HTML的錯誤和警告,但它失敗了,它有一種方法可以使用SimpleXML正確加載html文件?PHP SimpleXML:如何加載HTML文件?
此HTML文件可能有不需要的空格,也可能是我希望SimpleXML忽略的其他一些錯誤。
當我嘗試使用simplexml_load_string
作爲XML加載HTML文件時,我收到很多有關HTML的錯誤和警告,但它失敗了,它有一種方法可以使用SimpleXML正確加載html文件?PHP SimpleXML:如何加載HTML文件?
此HTML文件可能有不需要的空格,也可能是我希望SimpleXML忽略的其他一些錯誤。
我會建議使用PHP Simple HTML DOM。我自己用它來處理從抓取頁面到操縱HTML模板文件的任何內容,它非常簡單,功能非常強大,應該適合您的需求。
這裏是他們的文件,展示了這種事情的幾個例子,你可以這樣做:
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
檢查this手冊頁,這些選項之一(例如LIBXML_NOERROR)可能會幫助你......但請記住,html不一定是有效的xml,因此將它解析爲xml可能無效。
使用DomDocument::loadHtmlFile
與simplexml_import_dom
一起非簡潔(wellformed)HTML頁面加載到SimpleXML的。
這應該是被接受的答案。 – hakre 2013-06-22 08:37:06
下面是一些加載外部html頁面的快速代碼,然後用簡單的xml解析它。
//suppresses errors generated by poorly-formed xml
libxml_use_internal_errors(true);
//create the html object
$html = new DOMDocument();
//load the external html file
$html->loadHtmlFile('http://blahwhatever.com/');
//import the HTML object into simple xml
$shtml = simplexml_import_dom($html);
//print the result
echo "<pre>";
print_r($shtml);
echo "</pre>";
'使用simplexml解析html頁面是錯誤的,儘管 – silent 2010-07-05 09:21:29
@silent:xhtml怎麼辦?這不應該是有效的XML? – beldaz 2011-02-02 02:01:57