2013-03-15 66 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