是否有最新版本的php中的功能,专门用于帮助完成此任务?
答案 0 :(得分:7)
使用像SimpleXML这样的DOM解析器将HTML代码拆分成节点,然后遍历节点以构建数组。
对于损坏/无效的HTML,SimpleHTMLDOM更宽松(但它不是内置的)。
答案 1 :(得分:1)
如果HTML代码干净且始终相同,则字符串替换和爆炸将起作用,只要您有新属性就会生效。 因此,只有可靠的解决方案才能使用正则表达式或XML / HTML解析器。 查看http://php.net/manual/en/book.dom.php
答案 2 :(得分:1)
使用原生DOM parser的替代方法可能是使用YQL。这样你就不必自己做实际的解析了。 YQL Web服务使应用程序能够在Internet上查询,过滤和组合来自不同来源的数据。
例如,使用
中给出的类示例来获取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 );
我已经考虑缩短了网址,因此它不会弄乱答案。 $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
对象和数组的嵌套结构(因此它不是所有数组)。你必须看看它是否符合你的需要。
答案 3 :(得分:0)
我不知道这是否更快,但你可以检查这个类(使用preg_replace)
http://wonshik.com/snippet/Convert-HTML-Table-into-a-PHP-Array
答案 4 :(得分:-1)
如果你想转换表格的html描述,我会这样做:
</...>
)(http://php.net/manual/de/function.str-replace.php)<...>
)处拆分字符串你必须自己计算细节,因为我不知道你是否想要将不同的行作为子阵列处理,或者你想将所有行合并为一个大数组或其他东西。
答案 5 :(得分:-2)
您可以使用explode-function将表格cols和行转换为数组。
请参阅:php explode