2010-10-28 34 views
0

如何查看preg_match字符串是否包含1950年至2010年之間的年份?PHP - preg_match - 檢查字符串是否包含1950年至2010年之間的年份

示例:

$ string =「我生於1986年。

+0

你想檢查今年是否在這些年份之間?或者這是一個任意的一年? – 2010-10-28 19:29:24

+1

請詳細說明。你給了「年」或「時間戳」或「日期的字符串表示」或什麼? – kennytm 2010-10-28 19:29:37

+1

你的更新並沒有真正澄清這個問題。你的字符串是以某種方式格式化的嗎?它只是一個任意的字符串?爲什麼你必須使用preg_match而不是'strtotime()'?一些例子會有所幫助。 – 2010-10-28 19:32:58

回答

4

如果字符串已經被格式化,可以通過getdate()消耗的方式,其他的答案將是最好的解決方案。

如果字符串就是這可能會或可能不會包含日期,你需要使用正則表達式來找到這些號碼一些隨機的文本。

/(19[5-9][0-9]|20(0[0-9]|10))/

當然,你有沒有保證,符合這樣的數字其實是一年。它可能是2005磅鋼或1976英里高速公路。

+1

1爲正則表達式,並使用一個正則表達式的問題。 .. – ircmaxell 2010-10-28 19:42:48

+0

啊正確 - 我可以離開{1}離開...好..;) – Tobias 2010-10-28 19:46:38

6

假設你有一個時間戳:

$date = getdate($timestamp); 
if ($date['year'] >= 1950 && $date['year'] <= 2010) 
    return 'good'; 
+0

和如果你沒有你得到一個的時間戳與'strtotime'或使用'date_parse' – Gordon 2010-10-28 19:32:23

+0

定期數爲=>([0-9] {1,}) – somewhereInPHP 2010-10-28 19:33:42

0
$date = getdate($timestamp); 
if((int)$date['year'] >= 1950 && (int)$date['year'] <= date('Y')) { 
    return 'good'; 
} 

:P

if(preg_match('/^(19[5-9]{1}[0-9]{1}|20(0[0-9]{1}|10))$/', $i)) {} 
// tested - works. 1950-2010 
相關問題