simplexml可以用来通过html步枪吗?

2022-08-30 19:42:04

我想在不使用正则表达式的情况下从表中获取数据。我喜欢使用simplexml来解析RSS提要,并且想知道它是否可以用来从另一个页面获取表格。

例如。用curl或简单地file_get_contents()抓住页面;然后使用单纯形ml来抓取内容物?


答案 1

您可以使用 DOM 模块中的 loadHTML 函数,然后通过 simplexml_import_dom将该 DOM 导入 SimpleXML:

$html = file_get_contents('http://example.com/');
$doc = new DOMDocument();
$doc->loadHTML($html);
$sxml = simplexml_import_dom($doc);

答案 2

如果这是XHTML - 是的,这绝对是可能的。真正的XHTML最终只是XML,因此可以使用XML解析器对其进行解析。

但是,SimpleXML 只接受严格的 XML。如果你无法获得有效的XHTML,看起来首先通过不太严格的库就可以了(来源在这里):DOMDocument

<?php
  $html = file_get_contents('http://...');
  $doc = new DOMDocument();
  $doc->strictErrorChecking = FALSE;
  $doc->loadHTML($html);
  $xml = simplexml_import_dom($doc);
?>

推荐