我想从表中获取数据而不使用正则表达式。我很高兴使用simplexml来解析RSS提要,并想知道它是否可以用来从另一个页面中获取表格。
EG。用curl抓取页面或只是file_get_contents();然后使用simplexml来获取内容?
答案 0 :(得分:32)
您可以使用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);
答案 1 :(得分:7)
如果这是XHTML - 是的,这绝对是可能的。真正的XHTML最终只是XML,因此可以使用XML解析器进行解析。
然而,DOMDocument
库来实现这一点(source here):
<?php
$html = file_get_contents('http://...');
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
?>
答案 2 :(得分:2)
我的版本 - 容忍错误和编码问题
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML(mb_convert_encoding($this->html_content, 'HTML-ENTITIES', 'UTF-8'));
libxml_use_internal_errors(false);
$xml = simplexml_import_dom($doc);
答案 3 :(得分:0)
可能取决于页面。如果页面是XHTML(现在大多数网页),那么任何XML解析器都应该这样做,否则就要寻找SGML解析器。以下是您可能感兴趣的类似问题:Error Tolerant HTML/XML/SGML parsing in PHP