当我想转换日期以便我可以将其“提供”给MySQL(mm / dd / yyyy - > yyyy-mm-dd)时,这个preg_match工作正常
$new_date = preg_replace("!([01][0-9])/([0-9]{2})/([0-9]{4})!", "$3-$1-$2", $data[$c]);
日期
04/02/2012, 12/31/2012
但是当我得到像
这样的输入时它会失败12/1/2011, 1/4/2011
如何解决这个问题,因为我对正则表达式来说是完全没有... :(
非常感谢你的帮助。
答案 0 :(得分:1)
尝试:
!([01]?[0-9])/([0-9]{1,2})/([0-9]{4})!
第二组的{1,2}
表示0-9之间的1或2位数。我还让第一部分接受1或2位数字,这样你就可以匹配3/12/2012和03/12/2012。
答案 1 :(得分:1)
尝试:
!(\d{1,2})/(\d{1,2})/(\d{4})!
\d
表示数字,我认为它比[0-9]
更方便,而且它们几乎相同。
答案 2 :(得分:0)
使用日期然后使用正则表达式更容易。 DateTime对象使这很容易:
$date = new DateTime('1/1/2013');
$new_date = $date->format('Y-m-d'); // Outputs 2013-01-01
答案 3 :(得分:0)