作者gpmm (銀色)
看板RegExp
標題[心得] PHP preg_replace 對日期補 0
時間Fri Jan 8 20:27:41 2010
pattern:
/-(\d)(?=\D|$)/i
sample:
echo preg_replace (
"/-(\d)(?=\D|$)/i",
'-0\1',
'2010-1-8');
echo preg_replace (
"/-(\d)(?=\D|$)/i",
'-0\1',
'2010-01-8');
echo preg_replace (
"/-(\d)(?=\D|$)/i",
'-0\1',
'2010-1-08');
echo preg_replace (
"/-(\d)(?=\D|$)/i",
'-0\1',
'2010-01-08');
output:
2009-01-08
2009-01-08
2009-01-08
2009-01-08
--
花了好些時間才想出來… orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.80.28.216
1F:推 No:2010 output 2009 也是其功能嘛~? XDDD 01/08 20:44
2F:→ bibo9901:XD 01/08 21:46
3F:→ bibo9901:推高手,但這好像不需要用到regexp吧XD? 01/08 22:07
4F:推 No:若是針對這四種可能,我會用 /-([1-9])/g 來做 01/08 22:31
5F:→ james732:2010 output 2009 XDDDD 01/09 21:03
6F:推 othree:to 4樓: 尾巴不檢查遇到 10, 11, 12 月就掛了 01/09 21:13
7F:→ gpmm:因為不整齊的日期補零很麻煩…囧,不想特地拆字串或丟 func 01/09 21:17
8F:→ gpmm:啊靠,現在才看到是 2010 output 2009 XDDD 01/09 21:18
9F:推 No:對耶 我根本沒測10之後 真囧 01/09 22:04
10F:推 No:我試著再加入檢查結尾,就變成跟原po差不多的pattern了 XD 01/09 22:52
12F:→ badwork:上面這個可以嗎? 01/10 19:06
13F:→ gpmm:樓上這個很讚,可是小弟不想先把 string date 轉成 timestamp 01/10 22:06
14F:→ gpmm:,再用 strftime 濾出來,這樣感覺也有點繞路 XDD 01/10 22:07
15F:→ gpmm:不過無疑是個好方法~推! 01/10 22:07
16F:推 bibo9901:date('Y-m-d',strtotime($string)); 01/11 03:15
17F:推 othree:測了一下還是 Regexp 比較快 01/13 20:13