作者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