在字符串中查找第一个日期

Find first date in string

我有一个使用 "pdfparser" 插件解析的 pdf 文件。从页面的文本中,我需要在特定字符串(搜索字符串)之后找到第一个日期。我可以找到搜索字符串和我使用的日期提取

date_parse($string)

它可以很好地提取日期、月份,但我认为由于字符串较大(带有更多日期、数字),它没有填充正确的年份,它给出了一个甚至不存在于文档中的随机数。

有没有其他方法可以得到那个日期。以下是示例字符串。(日期后有更多日期)

Satisfaction of the mortgage from Karen Ann Lewis,a single woman to Bank of America, N.A. recorded March 4, 2004

您可以尝试以下正则表达式(以您提供的格式提取第一个日期),然后使用 parse_date():

$str = 'Satisfaction of the mortgage from Karen Ann Lewis,a single woman to Bank of America, N.A. recorded March 4, 2004';

preg_match("/(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4}/", $str, $matches);

var_dump( date_parse($matches[0]) );

以上输出:

array(12) {
  ["year"]     => int(2004)
  ["month"]    => int(3)
  ["day"]      => int(4)
  ["hour"]     => bool(false)
  ["minute"]   => bool(false)
  ["second"]   => bool(false)
  ["fraction"] => bool(false)
  ...
}

Demo here