PHP preg_match 提取 <td> 里面的 date/time 并转换成 Unix 时间

PHP preg_match extract date/time inside <td> and convert into Unix time

在我的代码中,我试图仅从 <td> 中提取 date/time,然后想将其转换为 Unix 时间戳,但我一直无法提取它赢得的 preg_match_all() 函数当我使用 $result[0]$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);

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

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

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