Это должно работать для извлечения указанных дат текст:
preg_match_all('/(^|\s+)(\d{4}|\'\d{2}|(january|february|march|april|may|june|july|august|september|october|november|december) \d{2})(\s+|$)/i', $text, $matches);
Это пришло мне в голову, тоже (это дает пользователю немного больше свободы):
preg_match_all('/(^|\s+)((january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)?(\s|\s?\')(\d{2}|\d{4}))(\s+|$)/i', $text, $matches);
Все вышеперечисленное будет легче, когда анализируется с несколькими выражениями. Зачем вам нужен один?
Если вы просто хотите разобрать строку, которая содержит ничего, кроме этого, вы должны использовать PHP strtotime()
-function.
... и они не являются случайно также входящей дни и месяцы в том же `textarea`? – 2010-12-02 13:01:00
@tim Нет дней наверняка. Хотя некоторые используют месяцы как sep'99 или сентябрь 99 года. – 2010-12-02 13:08:06