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']
要查找前两位数字,正则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)
因此,您可以在此处获取完整的日期表格并将其转换为标准日期格式。