gpt4 book ai didi

php - 正则表达式使用 YYYY-MM-DD 格式验证 PHP 中的日期

转载 作者:可可西里 更新时间:2023-11-01 12:42:13 24 4
gpt4 key购买 nike

我正在尝试制作一个日期正则表达式验证器。我遇到的问题是我使用的是 "date" 类型的输入字段,这在 Chrome 中非常有用;它会在 Chrome 中打开类似日历的功能,但在其余部分它什么都不做,所以我决定为其余部分手动输入日期。

这是我的错误抛出消息(我正在寻找 YYYY-MM-DD 格式):

$date_regex ='#^(19|20)\d\d[\- /.](0[1-9]|1[012])[\- /.](0[1-9]|[12][0-9]|3[01])$#';
$hiredate = $_POST['hiredate'];
if (!preg_match($date_regex, $hiredate)){
$errors[] = 'Your hire date entry does not match the YYYY-MM-DD required format.';
}

我知道有很多关于此的示例,但我已经尝试了大约 20 个,但我无法解决。也许我遗漏了什么。

这里是输入字段,如果有点相关的话:

<input type="date" name="hiredate" />

最佳答案

不要为此使用正则表达式,使用 DateTime::createFromFormat 可以获得相同的结果

// specify your date's original format, in this example m/d/Y (e.g. 08/31/2013)
$format = "m/d/Y";
$hireDate = DateTime::createFromFormat($format, $_POST['hiredate']);
if(!$hireDate) {
// createFromFormat returns false if the format is invalid;
} else {
//change it to any format you want with format() (e.g. 2013-08-31)
echo $hireDate->format("Y-m-d");
}

您可以在这里阅读更多内容:

http://php.net/manual/en/datetime.createfromformat.php

但是,这个问题似乎与 PHP 完全无关。

PHP跑后端,看来你前端有问题。

我也怀疑问题出在您使用的输入类型上。如果某个浏览器不支持您指定的输入类型,则默认为文本。在这里查看:

http://jsfiddle.net/FKGCA/

我的浏览器不知道 <input type="whatever" /> 是什么是,所以它默认输入类型为“文本”。如果我将这 4 个输入包装在 <form action="myForm.php" method="POST"></form> 中标记,浏览器将输入发送到服务器,因为服务器不关心/不知道输入是否被隐藏、单选按钮、选择、文本或密码。服务器只接收原始数据。

很可能,您的问题出在您的 Javascript 上,而不是您的 PHP 上。尝试查看不显示小部件的浏览器是否告诉您页面中存在某种错误。

Safari 和 Firefox 有开发/调试工具,IE 不太确定。

关于php - 正则表达式使用 YYYY-MM-DD 格式验证 PHP 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773418/

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