Heim  >  Artikel  >  Backend-Entwicklung  >  PHP正则匹配日期和时间程序代码_PHP教程

PHP正则匹配日期和时间程序代码_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:00:291197Durchsuche

今天我要替换一个数据库要把数据库指定字符串中的日期与时间取出来然后时间戳转换了,我字段是字符带日期了匹配时间格式为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

附上我自己写的实例

 代码如下 复制代码


<br>
<?php <br />
$str="嘿嘿2010/07/08 12:31:56哈哈1999/12/31 13:21:45";<br>
$str2="嘿嘿2010-07-08 12:31:56哈哈1999-12-31 13:21:45";<br>
//仅匹配日期<br>
preg_match_all("/d{4}/d{2}/d{2}/", $str, $arr);<br>
preg_match_all("/d{4}-d{2}-d{2}/", $str2, $arr2);<br>
//匹配日期与时间<br>
preg_match_all("/d{4}/d{2}/d{2}sd{2}:d{2}:d{2}/", $str, $arr3);<br>
preg_match_all("/d{4}-d{2}-d{2}sd{2}:d{2}:d{2}/", $str2, $arr4);<br>
echo '<font color="red">匹配日期</font><br>';<br>
print_r($arr);<br>
print_r($arr2);<br>
echo '<font color="red">匹配日期和时间</font><br>';<br>
print_r($arr3);<br>
print_r($arr4);<br>
?><br>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631254.htmlTechArticle今天我要替换一个数据库要把数据库指定字符串中的日期与时间取出来然后时间戳转换了,我字段是字符带日期了匹配时间格式为2012-02-16或...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn