gpt4 book ai didi

PHP 验证 $value 中的正确时间格式

转载 作者:行者123 更新时间:2023-11-28 20:17:06 25 4
gpt4 key购买 nike

我有一个在线表单,其中包含几个包含时间数据的字段。我将此数据存储到 MySQL 数据库中的 time 字段中,该字段需要格式 hh:mm:ss。如果用户以这种格式正确输入时间,那么我想接受数据。我还希望允许用户输入标准美国时间的时间,例如 9:30 am11:25 pm10:27 am 等等

基本上我想先测试时间是否是正确的数据库格式(hh:mm:ss),然后如果不是,测试它是否是第二种可接受的格式(hh:mm am/pm), 如果是,那么我将使用 PHP 函数 strtotime() 将其转换为数据库时间格式。如果它不是这两种格式,那么我们会显示一条错误消息并结束。

有谁知道如何测试变量的值是否匹配这些时间格式之一?

我想做的伪 PHP 代码:

<?php
$value = //some time;
if (is_database_time($value)){
// good no problem
}else if (is_usa_time($value)){
$value = strtotime($value);
}else{
die("error incorrect time format, try again.");
}
?>

** 编辑 **

感谢大家的帮助。我使用了这里的一些信息来制作一个完美运行的函数:

<?php
function filter_time($key,$value){
// this section handles the storage of time data
if (preg_match('/^(0?\d|1\d|2[0-3]):[0-5]\d:[0-5]\d$/', $value)){
//do nothing
}else if (preg_match('/^(0?\d|1[0-2]):[0-5]\d\s(am|pm)$/i', $value)){
$value = date( 'H:i:s', strtotime($value));
}else{
display_error('incorrect time format in '.$key.' field.');
}
return $value;
}
?>

最佳答案

函数 verify_time_format()

function verify_time_format ($value) {

$pattern1 = '/^(0?\d|1\d|2[0-3]):[0-5]\d:[0-5]\d$/';
$pattern2 = '/^(0?\d|1[0-2]):[0-5]\d\s(am|pm)$/i';
return preg_match ($pattern1, $value) || preg_match ($pattern2, $value);

}

对于以下值返回 TRUE:

2:03:32
02:03:32
23:59:59
15:23 AM
15:23 am
09:41 pm
9:41 PM
etc...

更新:

function filter_time ($key, $value) {

$p1 = '/^(0?\d|1\d|2[0-3]):[0-5]\d:[0-5]\d$/';
$p2 = '/^(0?\d|1[0-2]):[0-5]\d\s(am|pm)$/i';

if (preg_match ($p1, $value) || preg_match ($p2, $value))
$res = date ('H:i:s', strtotime ($value));

else
display_error ("incorrect time format in {$key} field.");

return $res;

}

关于PHP 验证 $value 中的正确时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842279/

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