我有用戶輸入詳細信息的textarea,我想從textarea中提取年份。問題是用戶以不同的方式進入年份。如何使用preg_match提取年份
某些用戶輸入日期爲1999
或'99
或september 99
。我如何使用一個正則表達式字符串來提取年份。
我有用戶輸入詳細信息的textarea,我想從textarea中提取年份。問題是用戶以不同的方式進入年份。如何使用preg_match提取年份
某些用戶輸入日期爲1999
或'99
或september 99
。我如何使用一個正則表達式字符串來提取年份。
這應該用於提取所提到的日期工作out of text:
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。
\b\d\d(?:\d\d)?\b
將匹配一個兩位或四位數字。所以如果你的字符串只包含年份數字,那應該就夠了。
if (preg_match('/\b\d\d(?:\d\d)?\b/', $subject, $regs)) {
$result = $regs[0];
}
[. -]((?:\d\d|')\d\d)$
提取只能從字符串的數字:
/\b(\d+)\b/
......他們都沒有任何機會也進入日,月在同`textarea`? – 2010-12-02 13:01:00
@tim肯定沒有日子。有些則使用sep'99或99年9月的月份。 – 2010-12-02 13:08:06