开发者

Extract date from string in format "DD MMM YYYY"

I am trying to extract a date from a string variable and was hoping to get some help.

$editdate = "Content last modified on 17 May 2011 at 23:13";

from this string, I am trying to extract 17 May 2011, please keep in mind that the date will vary and the code needs to be able to extract any date in this format, DD MMM YYYY.

I thought of using preg_match to do this but I couldn't come up开发者_StackOverflow社区 with a proper regex pattern that would extract the date properly.

Is this possible to do with regex or should I use a different function?

Thanks for the help !


Try:

$timestamp = strtotime( str_replace( array("Content last modified ", "at"), "", $editdate ) );

Which will leave you with an epoch time stamp that you can then output however you like using date()


This is possible with a regex. Given the format DD MMM YYYY you would need a regex that matches two (or one?) digits, then one space, three letters, one space and four digits.

That would look like:

$regex = '/(\d{2} [a-z]{3} \d{4})/i';

This can be optimized further.


Presuming the textual content of your string is always the same, and that it always ends with the time...

$editdate = substr($editdate, 25, -9); // 17 May 2011

However, this is very inflexible if the date format were ever to change.


Try this '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];

I THINK that'll work in all cases (though it is pretty ugly).... :)


This might be the pattern that does the trick:

([0-9]){1}([0-9]){0,1}(\s.*\s)([0-9]){4}

Search for 1 digit then there might be another, followed by a space and character, a space and 4 digits for the year.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜