【问题标题】:What is the fastest way to convert html table to php array?将html表转换为php数组的最快方法是什么?
【发布时间】:2013-04-18 23:03:32
【问题描述】:

最新版本的 php 中是否有专门设计用于帮助完成此任务的内置函数?

【问题讨论】:

    标签: php html arrays html-table


    【解决方案1】:

    使用SimpleXML 之类的DOM 解析器将HTML 代码拆分为节点,然后遍历节点以构建数组。

    对于损坏/无效的 HTML,SimpleHTMLDOM 更为宽松(但它不是内置的)。

    【讨论】:

    【解决方案2】:

    如果 HTML 代码干净且始终相同,则字符串替换和爆炸将起作用,只要您有新属性,它就会停止。 因此,唯一可靠的解决方案是使用正则表达式或 XML/HTML 解析器。 检查http://php.net/manual/en/book.dom.php

    【讨论】:

    【解决方案3】:

    使用原生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 对象和数组的嵌套结构(所以它不是所有数组)。你必须看看这是否符合你的需要。

    try out the interactive YQL console to see how it works

    【讨论】:

      【解决方案4】:

      我不知道这是否更快,但你可以检查这个类(使用 preg_replace)

      http://wonshik.com/snippet/Convert-HTML-Table-into-a-PHP-Array

      【讨论】:

        【解决方案5】:

        如果你想转换表格的 html 描述,我会这样做:

        你必须自己解决细节,因为我不知道你是否想将不同的行作为子数组处理,或者你想将所有行合并到一个大数组或其他东西中。

        【讨论】:

          【解决方案6】:

          您可以使用explode-function 将表格列和行转换为数组。

          见:php explode

          【讨论】:

          • explode() 不会帮助拆分 HTML 表格结构,对吗?
          • 你必须注意结束标签,但是像这样拆分表格: $rows = explode("", $tablehtml);可能是一种可能性。但我同意你的观点,@amora 遍历 dom 似乎是一种更好的方式。
          猜你喜欢
          相关资源
          最近更新 更多
          热门标签