最新版本的PHP中是否有专门设计用于辅助此任务的内置函数?
在编程中,使用本地DOM解析器的替代方法可以是使用YQL。这样,您就不必自己进行实际解析。YQL Web服务使应用程序能够查询、过滤和组合来自互联网上不同来源的数据。
例如,要获取给定网址上具有类"example"的HTML表格
http://www.w3schools.com/html/html_tables.asp
你可以做到
$yql = 'http://tinyurl.com/yql-table-grab';
$yql = json_decode(file_get_contents($yql));
print_r( $yql->query->results );
我已经缩短了URL,以免影响答案。 $yql
实际上链接到YQL API,添加一些选项并包含查询:
select * from html
where xpath="//table[@class='example']"
and url="http://www.w3schools.com/html/html_tables.asp"
YQL 可以返回 JSON 和 XML。我已经让它返回 JSON 并对其进行解码,结果是嵌套的 stdClass 对象和数组结构(因此并非全部是数组)。您必须确定它是否符合您的需求。
如果HTML代码干净且始终相同,则字符串替换和分割将起作用,但一旦出现新属性,它就会中断。 因此,唯一可靠的解决方案是使用正则表达式或XML / HTML解析器。 请查看http://php.net/manual/en/book.dom.php。
我不确定这是否更快,但您可以检查此类(使用 preg_replace)
http://wonshik.com/snippet/Convert-HTML-Table-into-a-PHP-Array
如果您想要转换表格的HTML描述,这是我会这样做:
</...>
)(http://php.net/manual/de/function.str-replace.php)<...>
)处拆分字符串(http://php.net/manual/en/function.split.php)您必须自己解决细节问题,因为我不知道您是否希望将不同行作为子数组处理,还是希望将所有行合并成一个大数组或其他内容。
你可以使用explode函数将表格的列和行转换为数组。
参见:php explode