从字符串中提取日期,格式为“ DD MMM YYYY”。

| 我试图从字符串变量中提取日期,并希望获得一些帮助。
$editdate = \"Content last modified on 17 May 2011 at 23:13\";
我正在尝试从此字符串中提取2011年5月17日,请记住日期会有所不同,并且代码必须能够提取这种格式为DD MMM YYYY的任何日期。 我曾想过使用preg_match来做到这一点,但我无法提出一种正确的正则表达式模式来正确提取日期。 这可能与正则表达式一起使用还是应该使用其他功能? 谢谢您的帮助 !     
已邀请:
尝试:
$timestamp = strtotime( str_replace( array(\"Content last modified \", \"at\"), \"\", $editdate ) );
它将留下一个纪元时间戳,您可以将其输出,但是您喜欢使用
date()
    
使用正则表达式是可能的。给定格式DD MMM YYYY,您将需要一个匹配两个(或一个?)数字,然后是一个空格,三个字母,一个空格和四个数字的正则表达式。 看起来像:
$regex = \'/(\\d{2} [a-z]{3} \\d{4})/i\';
这可以进一步优化。     
假设字符串的文本内容总是相同的,并且总是以时间结尾...
$editdate = substr($editdate, 25, -9); // 17 May 2011
但是,如果要更改日期格式,这将非常不灵活。     
试试这个\'un:
preg_match(\'/(\\d?\\d [A-Za-z]+ \\d\\d\\d\\d) at (\\d\\d\\:\\d\\d)/\', $editdate, $matches);

print_r($matches); 
$date = $matches[1];
$time = $matches[2];
我认为这在所有情况下都可以工作(尽管很丑).... :)     
这可能是达到目的的模式:
([0-9]){1}([0-9]){0,1}(\\s.*\\s)([0-9]){4}
搜索1位数字,然后可能再输入一位数字,然后是空格和字符,空格和4位数字。     

要回复问题请先登录注册