php正则匹配时间戳,PHP正则匹配日期和时间程序代码

本文介绍了如何使用正则表达式从数据库字符串中提取日期和时间,并通过strtotime函数将其转换为时间戳。作者分享了测试代码和实例,展示了针对格式如'2012-02-16'和'2012-02-16 23:59:59'的匹配规则。
摘要由CSDN通过智能技术生成

今天我要替换一个数据库要把数据库指定字符串中的日期与时间取出来然后时间戳转换了,我字段是字符带日期了匹配时间格式为2012-02-16或2012-02-16 23:59:59前面为0的时候可以不写,后来找到一些测试代码.

下面贴出代码,代码如下:

//匹配时间格式为2012-02-16或2012-02-16 23:59:59前面为0的时候可以不写

$time="2012-02-16 23:59:59";

$patten="/^d{4}[-](0?[1-9]|1[012])[-](0?[1-9]|[12][0-9]|3[01])(s+(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9]))?$/";

if(preg_match ($patten,$time)) {

echo$timestro=strtotime($time);

} else{

echo"error";

}

?>

对该正则的分析,代码如下:

/^d{4}[-](0?[1-9]|1[012])[-](0?[1-9]|[12][0-9]|3[01])(s+(0?[0-9]|[12][0-3]):(0?[0-9]|[1-5][1-9]):(0?[0-9]|[1-5][1-9]))?$/

/是表达式开始符 最后面的/是表达式的结束符

^字符串的开始,即以***开始

$表示字符串的结尾,即表示已***结尾

|表示或者

()表示一个单元

d{4}匹配一个4位数

(-)匹配一个“-”号

(0?[1-9]|1[012])匹配月份

(0?[1-9]|[12][0-9]|3[01])匹配天

(s+(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9]))?,整个匹配时分秒部分,?表示有或者没有。

最后一步就是对匹配成功的进行时间戳转换,当前转换结果为:1329407999

附上我自己写的实例,代码如下:

 
 

$str="嘿嘿2010/07/08 12:31:56哈哈1999/12/31 13:21:45";

$str2="嘿嘿2010-07-08 12:31:56哈哈1999-12-31 13:21:45";

//仅匹配日期

preg_match_all("/d{4}/d{2}/d{2}/",$str,$arr);

preg_match_all("/d{4}-d{2}-d{2}/",$str2,$arr2);

//匹配日期与时间

preg_match_all("/d{4}/d{2}/d{2}sd{2}:d{2}:d{2}/",$str,$arr3);

preg_match_all("/d{4}-d{2}-d{2}sd{2}:d{2}:d{2}/",$str2,$arr4);

echo'匹配日期
';

print_r($arr);

print_r($arr2);

echo'匹配日期和时间
';

print_r($arr3);

print_r($arr4);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值