1

我想用 php 从另一个域 html中获取一个<ul>s 。innerHTML

$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); 其他行号,可能针对 urls html 代码。如何轻柔地处理目标 URL 并将其加载到 DOM 容器中?我哪里做错了?

4

2 回答 2

1

您收到的消息只是一个警告;不是错误——DOM 仍在填充中。

但是,它会警告您传入的 HTML 不正确,因此它不能保证它生成的 DOM 完全符合作者的预期。

但在许多情况下,这真的无关紧要,所以如果你对此没意见,请随意忽略警告并继续进行。

在这种情况下,您需要做的就是禁止显示警告。

此处对此进行了更详细的讨论:DomDocument (PHP) 加载非格式良好的 HTML 时禁用警告

希望有帮助。

于 2013-03-15T23:03:36.633 回答
1

使用PHP Simple HTML DOM Parser你可以很容易地做到这一点,只需从这里simple_html_dom.php下载文件并按如下方式使用它。

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 />';
}

或者使用它来仅获取ul带有类名的subnav2

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

上述代码的输出(5个li标签)

  • 医疗器械警报
  • 现场安全通知 (FSN)
  • 药物警报
  • 药品安全警告和信息
  • 英国药物安全公共评估报告
  • 它易于使用,选择语法就像jQuery,阅读文档以了解更多信息。

    于 2013-03-15T22:52:22.023 回答