PHP preg_match 在 <td> 中提取日期/时间并转换为 Unix 时间

Posted

技术标签:

【中文标题】PHP preg_match 在 <td> 中提取日期/时间并转换为 Unix 时间【英文标题】:PHP preg_match extract date/time inside <td> and convert into Unix time 【发布时间】:2018-03-12 08:35:12 【问题描述】:

在我的代码中,我试图仅从 &lt;td&gt; 中提取日期/时间,然后想将其转换为 Unix 时间戳,但我被困在提取 preg_match_all() 函数中,当我使用 @ 时它不会显示任何内容987654323@ 或$result[1]。我不知道为什么,但是当我转储数组时,我得到了以下结果:

我的数组

Array
(
    [0] => Array
        (
            [0] => <td align="left" valign="top">02 April 2017 | 05:55 PM</td>
        )

    [1] => Array
        (
            [0] => 02 April 2017 | 05:55 PM
        )

)

这是我的 php 代码

preg_match_all('/<td align="left" valign="top">([^"]*)<\/td>/', $printtable, $result);
var_dump($result);

【问题讨论】:

@chris85 完美运行,但如何将时间转换为 unixtime? 你可能想看看php函数date_parse_from_format 保证完美 为什么不简单地使用strip_tags() 去除html标签? @KIKOSoftware 这个选项很适合我 【参考方案1】:

preg_match_all 返回一个多维数组,而不是像preg_match 这样的单元素数组。您的捕获组是 $result[1][0]1 索引是第一个捕获组,所有其他索引都是附加捕获组)。要将字符串转换为 unix 时间,您可以使用 strtotimestr_replace(要将其转换为 strtotime 可以处理的格式,您也可以使用 preg_replace 并去除所有非字母数字/空格字符)。

echo strtotime(str_replace('|', '', '02 April 2017 | 05:55 PM'));

演示:https://3v4l.org/MsOlv

【讨论】:

以上是关于PHP preg_match 在 <td> 中提取日期/时间并转换为 Unix 时间的主要内容,如果未能解决你的问题,请参考以下文章

PHP / MYSQL / HTML在不同数据集之间显示空白html表行

在 PHP codeigniter 中动态获取数据时如何隐藏 td?

在php中使用preg_match检测多个单词

DOM文档在php中

通过变量引用制作一个php数组

Ajax 加载数据 练习