【问题标题】:Tallying instances of unique values in an HTML table统计 HTML 表格中唯一值的实例
【发布时间】:2018-07-06 01:21:57
【问题描述】:

我希望计算HTML 表中每个唯一值的实例,并将结果返回到它自己的表中。该表是根据用户的文本输入生成的。因此,例如,用户输入可能如下所示:

Report 46     Bob Marley   4/20/2013    Summary: I shot the sheriff    Case #32  User Error
Report 50    Billy The Kid    7/14/2013   Summary: I'm just a boy in a grown up world   Case #33    User Experience
Report 51    Oscar The Grouch    10/10/2013   Summary: Refuse, reuse, recycle   Case #33    User Experience

大的空格是制表符。

哪个会返回:

<table>
 <tr>
  <td>Bob Marley</td><td>46</td><td>4/20/2013</td><td>Case #32</td><td>User Error</td>
 </tr>
 <tr>
  <td>Billy The Kid</td><td>50</td><td>4/20/2013</td><td>Case #33</td><td>User Experience</td>
 </tr>
 <tr>
  <td>Oscar The Grouch</td><td>51</td><td>10/10/2013</td><td>Case #33</td><td>User Experience</td>
 </tr>
</table>

我需要做的是1)统计报告的数量,2)统计每个案例编号出现的次数,2)统计每个类别出现的次数,然后像这样在下一页显示:

Number of reports: 
3

Cases:
Case #33 - 2
Case #32 - 1

Categories:
User Experience - 2
User Error - 1

我正在寻找有关如何解决此问题的任何建议。我正在使用和学习 Javascript/HTML(和 jQuery),但如果这些工具更合适,我愿意使用 PHP、SQL 等。

我正在考虑将表值传递给数组,然后使用 for 循环和 regexes 来计算唯一值,但我不确定这是否是最好的方法。

编辑

我没有明确说明的另一个细节是,在将用户输入数据(即制表符分隔的文本)转换为表格之前,我可以访问它。因此,如果在将其转换为表格之前对有问题的值进行统计更容易,请告诉我。

【问题讨论】:

    标签: javascript php jquery html-table


    【解决方案1】:

    就 PHP 而言,您可以将表格 HTML 存储到字符串中,然后将其加载到 DOM 解析器中。

    http://simplehtmldom.sourceforge.net/

    这是我们在大多数涉及页面抓取的项目中使用的,尽管它同样适用于使用它们的函数从字符串中解析 HTML:

    $html = str_get_html($yourHtmlString);
    

    然后您可以遍历每个 tr,然后您可以从那里查看每个 td 以添加到您的计数中。

    即要获取第三行的类别,您可以使用:

    $html->find("table", 0)->find("tr", 2)->find("td", 4)->plaintext;
    

    你可以像这样循环遍历表格:

    $reportCount = 0;
    $reportCases = array();
    foreach ($html->find("table", 0)->find("tr") as $tableRow) {
        $reportCount++; 
        $reportCases[] = $tableRow->find("td", 1)->plaintext;
    }
    

    等等。虽然当然也存储所有其他必要的数据,然后根据需要将其格式化为表格输出。

    【讨论】:

    • 感谢您的意见,帕特里克。我将阅读您现在链接的 DOM 解析器。看起来很有希望。
    • 如果我在创建 HTML 表格期间分配的 ids 和 classes 有创意,我想我可以使这个解决方案工作。谢谢推荐。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多