我想从一个表格中获取数据,但不想使用正则表达式。我喜欢使用 simplexml 来解析 RSS 订阅,想知道它是否可以用来从另一个页面中获取表格。
例如:使用 curl 或者简单的 file_get_contents() 函数获取页面内容,然后使用 simplexml 来获取表格内容?
您可以使用 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);
<?php
$html = file_get_contents('http://...');
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
?>
我的版本 - 容错能力强,对编码问题处理得当
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);
这可能取决于页面。如果页面是XHTML格式(现在大多数网页都是),那么任何XML解析器都可以使用,否则请寻找SGML解析器。这里有一个类似的问题,你可能会感兴趣:PHP中容错HTML/XML/SGML解析错误
simplexml_import_dom
зљ„й“ңжҺӨе’ЊдёЂз‚№иү›дёЂжӨзљ„и§Әй‡ЉгЂ‚ - T.J. Crowder