2013-03-15 62 views
1

我想從其他域使用PHP獲得<ul> s innerHTMLfile_get_contents與目標url源代碼的警告消息

$mhraWebUygulamasi =file_get_contents('http://www.mhra.gov.uk/Safetyinformation/Safetywarningsalertsandrecalls/index.htm'); 
$doc = new DOMDocument(); 
$doc->loadHTML($mhraWebUygulamasi); 
$doc->preserveWhiteSpace=false; 

但是爲了進一步編碼,我得到了這個警告信息。

Warning: DOMDocument::loadHTML(): Unexpected end tag : fragmentinstance in Entity, line: 123 in C:\xampp\htdocs\YeBeSis\mhra.php on line 4 

4行是$doc->loadHTML($mhraWebUygulamasi); 其他行號可能目標URL的HTML代碼。 如何輕鬆處理目標網址並將其加載到DOM容器?我哪裏做錯了?

+1

這有幫助嗎? [http://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on-html5-tags](http://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on- html5-tags) – gmartellino 2013-03-15 23:07:50

+0

謝謝。這個鏈接非常有說服力。但是,我應該處理目標網址html加上supress(禁用)警告消息。我會嘗試@Sheikh Heera的解決方案。 – caglaror 2013-03-16 18:29:07

回答

1

使用PHP Simple HTML DOM Parser您可以輕鬆完成,只需下載simple_html_dom.php文件from here並按如下方式使用它。

include('simple_html_dom.php'); 
$html = file_get_html('http://www.mhra.gov.uk/Safetyinformation/Safetywarningsalertsandrecalls/index.htm'); 

然後循環,例如,讓所有ul標籤和它的內容,你可以使用下面的循環

foreach($html->find('ul') as $li){ 
    echo $li->innertext.'<br />'; 
} 

或者使用與類名只得到ulsubnav2

foreach($html->find('ul.subnav2') as $li){ 
    echo $li->innertext.'<br />'; 
} 

以上代碼的輸出(5 li標籤)

  • 醫療 設備警報
  • 場 安全注意事項(FSNs)
  • 藥物 警報
  • 安全 警告和信息藥品
  • 英國 公共評估報告藥品安全
  • 這是易於使用和選擇語法就像jQuery,請閱讀文檔以瞭解更多信息。

    +0

    非常感謝。我將使用這個解析器。我認爲非常好的解決方案。 – caglaror 2013-03-16 18:31:50

    +0

    不客氣,是的,這是一個非常好的解析器:-) – 2013-03-16 18:46:04

    1

    你收到的信息只是一個警告;沒有錯誤 - DOM仍在填充。

    但是,它警告你傳入的HTML不正確,因此它不能保證它生成的DOM完全按照作者的意圖。

    但是在很多情況下,它並不重要,所以如果你沒有問題,可以隨意忽略警告並繼續進行。

    在這種情況下,您只需要禁止顯示警告。 Disable warnings when loading non-well-formed HTML by DomDocument (PHP)

    希望幫助:

    這將在這裏詳細討論。

    +0

    謝謝你@Spudly。我將使用錯誤或警告陷阱類。你給的鏈接非常有用。 – caglaror 2013-03-16 18:30:48