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 【问题描述】:在我的代码中,我试图仅从 <td>
中提取日期/时间,然后想将其转换为 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 时间,您可以使用 strtotime
和 str_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表行