gpt4 book ai didi

PHP preg_match 与工作正则表达式

转载 作者:行者123 更新时间:2023-12-03 22:44:41 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Validate date format in php

(7 个回答)


7年前关闭。



function validateDate( $date )
{
echo $date;
//2012-08-24 20:30:00
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
{
return true;
}
else
{
return false;
}
}

这总是返回 false。我使用了唯一的工具来构建正则表达式,并且在那里运行良好。当我将“/”添加到正则表达式时,麻烦就开始了。不知何故,PHP 似乎需要这些,但我不知道为什么,也不知道为什么它会破坏我的正则表达式。

它应该为某事返回TRUE。像“2012-08-24 20:30:00”和“asdf2012-08-24 20:30:00asdf”或任何不符合我的正则表达式的错误

提前致谢!

- - - - - - - - - - - -编辑
感谢您的所有回答!

正如一些用户指出的那样,我的函数在示例日期“2012-08-24 20:30:00”返回true。但是,只有当我手动设置 $date='2012-08-24 20:30:00' 时它才会这样做。如果我使用完全相同的字符串在代码中的其他地方调用该函数,它将返回 false。有谁知道为什么?

-----------------------EDIT2

是的,很抱歉浪费您的时间,实际上是在字符串中添加了一些空格。在调用我的函数之前在我的日期使用 trim() 现在给出了正确的结果。

谢谢大家!

最佳答案

为什么要使用正则表达式?使用 DateTime类(class)。

function validateDate($date, $format = 'Y-m-d H:i:s')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}

您可以将此函数用于所有类型的日期/时间验证。例子:
var_dump(validateDate('2012-02-28 12:12:12')); # true
var_dump(validateDate('2012-02-30 12:12:12')); # false
var_dump(validateDate('2012-02-28', 'Y-m-d')); # true
var_dump(validateDate('28/02/2012', 'd/m/Y')); # true
var_dump(validateDate('30/02/2012', 'd/m/Y')); # false
var_dump(validateDate('14:50', 'H:i')); # true
var_dump(validateDate('14:77', 'H:i')); # false
var_dump(validateDate(14, 'H')); # true
var_dump(validateDate('14', 'H')); # true

var_dump(validateDate('2012-02-28T12:12:12+02:00', 'Y-m-d\TH:i:sP')); # true
# or
var_dump(validateDate('2012-02-28T12:12:12+02:00', DateTime::ATOM)); # true

var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', 'D, d M Y H:i:s O')); # true
# or
var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', DateTime::RSS)); # true
var_dump(validateDate('Tue, 27 Feb 2012 12:12:12 +0200', DateTime::RSS)); # false
# ...

关于PHP preg_match 与工作正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com