如何在 PHP 中以这种模式匹配正则表达式中的日期或特定工作

How to match a date or specific work in regex in this pattern in PHP

我正在尝试获取适用于以下 div 源代码的时间:

<div class="smallfont">
                (09-03-2015, 09:16 PM)
</div>

<div class="smallfont">
                (Yesterday, 11:11 AM)
</div>

<div class="smallfont">
                (Today, 12:10 PM)
</div>

周围有很多代码,但只要它以 "smallfont"> 开头,然后是回车符-return 换行符,也许还有 spaces/tabs,以配合开始(

我真的很接近。如果它只是日期的第一个场景,我可以使用它,但如果是今天或昨天,它就不起作用:

preg_match_all('/smallfont">[\n\r\s\t]+\([0-9\-]+,(.*?)\)/s', $output, $matchesTime);

第二件事:是否也可以编写代码,然后循环并用适当的日期替换昨天和今天?

非常感谢!

结合[0-9]+

写出所有的可能性
preg_match_all('/<div\b[^>]*\bclass="smallfont">[\n\r\s\t]+\((?:Today|Tomorrow|Yesterday|[0-9\-]+),\s*(.*?)\)/s', $output, $matchesTime);

DEMO

使用最一致的部分09:16 PM11:11 AM12:10 PM作为结束标记。

匹配 \d+:\d+\s+[AP]M 并结合周围环境 like this

smallfont">\s*\(\s*((?:[^,]+,\s*)?\d+:\d+\s+[AP]M)

\s 匹配空格并包含 \t \r \n\d 匹配一个数字。

用于 preg_match_all。第一组包含日期字符串匹配项。

2nd thing: ...replace the Yesterday and Today with the appropriate date

echo date("d-m-Y, h:i A", strtotime("yesterday, 09:16 PM"));