php检测并转换字符串中的日期

Adr*_*aci 8 php regex string date

我想知道我是否能以某种方式检测date字符串中的a并将其转换为a standard date format.

让我们考虑下面的输入字符串:

Company registered on 16 March 2003

要么

Activity between 10 May 2006 an 10 July 2008 - no changes.

现在我想要一个PHP函数应用于字符串并获取日期 YYYY-mm-dd

例:

$date = DateExtract($sting1); // output: 2003-03-16

$date = DateExtract($sting2); // output: ['2006-05-10','2008-07-10']

Rah*_*hul 4

要查找前两位数字,正则Date表达式将是 -(?<![0-9])[0-9]{2}(?![0-9])这也可以适用于四位数字Year,对于月份,您可以使用硬编码string search代码。

$string = "Activity between 10 May 2006 an 10 July 2008 - no changes.";

preg_match_all('/(\d{1,2}) (\w+) (\d{4})/', $string, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

输出 :

Array
(
    [0] => Array
        (
            [0] => 10 May 2006
            [1] => 10 July 2008
        )

    [1] => Array
        (
            [0] => 10
            [1] => 10
        )

    [2] => Array
        (
            [0] => May
            [1] => July
        )

    [3] => Array
        (
            [0] => 2006
            [1] => 2008
        )

)
Run Code Online (Sandbox Code Playgroud)

更新

要在字符串中查找完整日期,您可以使用此 -

它适用于月份的短代码(如月份)Jan和完整名称(如)January

代码:

$string = "Activity between 10 May 2006 an 10 July 2008 - no changes.";

preg_match_all('/(\b\d{1,2}\D{0,3})?\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)\D?(\d{1,2}\D?)?\D?((19[7-9]\d|20\d{2})|\d{2})/', $string, $complete);
print_r($complete);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [0] => Array
        (
            [0] => 10 May 2006
            [1] => 10 July 2008
        )

    [1] => Array
        (
            [0] => 10 
            [1] => 10 
        )

    [2] => Array
        (
            [0] => 
            [1] => 
        )

    [3] => Array
        (
            [0] => 20
            [1] => 20
        )

    [4] => Array
        (
            [0] => 06
            [1] => 08
        )

    [5] => Array
        (
            [0] => 
            [1] => 
        )

)
Run Code Online (Sandbox Code Playgroud)

因此,您可以在此处获取完整的日期表格并将其转换为标准日期格式。

演示在这里