如何在 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);
使用最一致的部分09:16 PM
11:11 AM
12: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"));
我正在尝试获取适用于以下 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);
使用最一致的部分09:16 PM
11:11 AM
12: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"));