[心得] PHP preg_replace 對日期補 0

看板RegExp (正規表示式 Regular Expression)作者 (銀色)時間15年前 (2010/01/08 20:27), 編輯推噓8(809)
留言17則, 6人參與, 最新討論串1/1
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

01/08 20:44, , 1F
2010 output 2009 也是其功能嘛~? XDDD
01/08 20:44, 1F

01/08 21:46, , 2F
XD
01/08 21:46, 2F

01/08 22:07, , 3F
推高手,但這好像不需要用到regexp吧XD?
01/08 22:07, 3F

01/08 22:31, , 4F
若是針對這四種可能,我會用 /-([1-9])/g 來做
01/08 22:31, 4F

01/09 21:03, , 5F
2010 output 2009 XDDDD
01/09 21:03, 5F

01/09 21:13, , 6F
to 4樓: 尾巴不檢查遇到 10, 11, 12 月就掛了
01/09 21:13, 6F

01/09 21:17, , 7F
因為不整齊的日期補零很麻煩…囧,不想特地拆字串或丟 func
01/09 21:17, 7F

01/09 21:18, , 8F
啊靠,現在才看到是 2010 output 2009 XDDD
01/09 21:18, 8F

01/09 22:04, , 9F
對耶 我根本沒測10之後 真囧
01/09 22:04, 9F

01/09 22:52, , 10F
我試著再加入檢查結尾,就變成跟原po差不多的pattern了 XD
01/09 22:52, 10F


01/10 19:06, , 12F
上面這個可以嗎?
01/10 19:06, 12F

01/10 22:06, , 13F
樓上這個很讚,可是小弟不想先把 string date 轉成 timestamp
01/10 22:06, 13F

01/10 22:07, , 14F
,再用 strftime 濾出來,這樣感覺也有點繞路 XDD
01/10 22:07, 14F

01/10 22:07, , 15F
不過無疑是個好方法~推!
01/10 22:07, 15F

01/11 03:15, , 16F
date('Y-m-d',strtotime($string));
01/11 03:15, 16F

01/13 20:13, , 17F
測了一下還是 Regexp 比較快
01/13 20:13, 17F
文章代碼(AID): #1BHoJ03u (RegExp)
文章代碼(AID): #1BHoJ03u (RegExp)