如何从 preg_match 中删除 class 以及如何创建时间戳

how to remove class from preg_match and how to create timestamp

我正在尝试获取 2020-11-05 20:34:38 此数据并将其转换为时间戳请帮助

谢谢

<?php
$html = '<time datetime="2020-11-05T20:34:38+00:00" class="time">20:34</time></a></span>';

preg_match('/<time datetime="(.*?)">[0-9:]+<\/time>/i', $html, $d );


//print_r ($d);
print_r ($d[1]);
?>
Output

2020-11-05T20:34:38+00:00" class="time

我正在尝试获取 2020-11-05 20:34:38 此数据并将其转换为时间戳请帮助

谢谢

将模式更改为 /datetime="([^"]+)/

<?php
$html = '<time datetime="2020-11-05T20:34:38+00:00" class="time">20:34</time></a></span>';
preg_match('/datetime="([^"]+)/i', $html, $d );
print_r($d[1]);

您应该将 class 添加到正则表达式中,例如:

preg_match('/<time datetime="(.*?)" class="time">[0-9:]+<\/time>/i', $html, $d );

time标签到trimdate,如果你确定日期时间的类型,你可以试试这个:

<?php
$html = '<time datetime="2020-11-05T20:34:38+00:00" class="time">20:34</time></a></span>';
$pattern = '/datetime="(?<date>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{2}:\d{2})/';
preg_match($pattern , $html , $matches);
$date = $matches["date"];
echo($date);

输出

2020-11-05T20:34:38+00:00

如果您不确定 datetime 属性中的内容,那么您更愿意以这样的模式编写正则表达式:

$pattern = '/datetime="(?<date>.+)\s+class/';

为了获取时间戳:

echo(strtotime($date)); 

输出

1604608478