首页 > 解决方案 > 在字符串中搜索日期值

问题描述

这是我目前的情况:我将动态字符串保存到变量 $content 中。

使用此代码,我得到了我的 $content 的所有值,其数字格式为 x.xx

preg_match_all('/\d+\,\d+/m', $content, $matches);

现在我想另外获取所有日期值。例如:

14.10.2021
10/14/2021
10. October 2021

年份也可能是 21 而不是 2021。这里有很多可能的版本。

还有一个 preg_match_all 解决方案吗?或者有没有办法说:

给我字符串的所有值,php 在哪里找到有效日期?

十分感谢 !!

标签: phpregex

解决方案


使用DateTime类通常是处理日期的好主意,但我想您需要提取它们,因为您的字符串不仅包含日期。由于月份,使用 RegEx 会导致较长的模式:

\d{2}(\.|\/)?(\d{2}\1|\s(January|February|March|April|May|June|July|August|September|October|November|December)\s)(\d{4}|\d{2})

但它符合以下条件:

  • \d{2}2 位数
  • (\.|\/)?可选的点或斜线(组捕获 n°1)
  • (
    • \d{2}\12 位数字后跟组捕获 n°1
    • |或者
    • \s(January|February|March|April|May|June|July|August|September|October|November|December)\s一个月左右有空格
  • )
  • (\d{4}|\d{2})2 或 4 位数字

推荐阅读