首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过简单的html dom在html-table中统计播放的比赛天数

通过简单的html dom在html-table中统计播放的比赛天数
EN

Stack Overflow用户
提问于 2020-06-02 23:42:27
回答 1查看 25关注 0票数 1

我想要找出总的天数,使用简单的html dom已经播放了一个时间表.htm文件的天数。

.htm文件如下所示:

代码语言:javascript
复制
<tr><th>November 1 2020</th></tr>
<tr><th>visitor</th><th>score</th><th>home</th><th>score</th></tr>
<tr><td><a href="Wizards.htm">Wizards</a></td><td>120</td><td><a href="Hawks.htm">Hawks</a></td>111<td></td></tr>
<tr><td><a href="Celtics.htm">Celtics</a></td><td>98</td><td><a href="Heat.htm">Heat</a></td><td>108</td></tr>

<tr><th>November 2 2020</th></tr>
<tr><th>visitor</th><th>score</th><th>home</th><th>score</th></tr>
<tr><td><a href="Nets.htm">Nets</a></td><td>95</td><td><a href="Cavaliers.htm">Cavaliers</a></td>98<td></td></tr>
<tr><td><a href="Knicks.htm">Knicks</a></td><td>110</td><td><a href="Hornets.htm">Hornets</a></td><td>100</td></tr>

<tr><th>November 3 2020</th></tr>
<tr><th>visitor</th><th>score</th><th>home</th><th>score</th></tr>
<tr><td><a href="Thunder.htm">Thunder</a></td><td></td><td><a href="Timberwolves.htm">Timberwolves</a></td><td></td></tr>
<tr><td><a href="Trailblazers.htm">Trailblazers</a></td><td></td><td><a href="Lakers.htm">Lakers
... and so on... 

请注意,每天的游戏数量可能会有所不同。在上面的示例中,总量将为= 3,已播放= 2,未播放= 1。

到目前为止,我已经想出了这个:

代码语言:javascript
复制
$days = 0;
$days_played = 0;
$days_unplayed = $days - $days_played;

// find every row 
foreach($table->find('tr') as $row) { 

    // if row contains month then add a match-day
    if (strpos($row->find('th', 0)), 'November') OR
        strpos($row->find('th', 0)), 'December') OR
        strpos($row->find('th', 0)), 'January') OR
        strpos($row->find('th', 0)), 'February') OR
        strpos($row->find('th', 0)), 'March') OR
        strpos($row->find('th', 0)), 'April') OR
        strpos($row->find('th', 0)), 'May') !== false) {
            $days = $days + 1;
}

我知道这不是最好的解决方案,但到目前为止它是有效的。

我的问题是,我不知道如何获取天数,其中包含已玩/已得分的游戏。我能用这个找到的游戏本身。

代码语言:javascript
复制
$row->find('td', 1)

..。因为具有tds的行的第二列总是包含分数。但我只需要在每场比赛前数一次,否则我会得出比赛的次数,而不是比赛的天数。

既然我被困在这里了,我会非常感谢你的意见。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-06-03 00:39:55

如果您想要检查月份和日期,一种选择是使用使用DateTime::createFromFormat的DateTime,并检查月份名称和日期名称。

此页概述了不同的formats

代码语言:javascript
复制
$months = ["November", "December"];
foreach($table->find('tr') as $row) {    
    $res = $row->find('th', 0);
    if ($res && $counter%4 ===  0) {
        $dateTime = DateTime::createFromFormat("F d Y", $res->innertext());
        $month = $dateTime->format("F");
        $day = $dateTime->format("l");

        if (in_array($month, $months) && $day === "Sunday") { // I don't know the play day
            $days = $days + 1; 
        }

    }
    $counter++;    
}

var_dump($days);

输出

代码语言:javascript
复制
1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62155817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档