6

我正在使用允许用户选择日期的 javascript 日期选择器。但是,我还想在进入数据库之前对发布的日期数据进行清理。我在这里没有看到任何净化过滤器:http: //us2.php.net/manual/en/filter.filters.sanitize.php

在进入数据库之前清理日期的最佳方法是什么?

这将是帖子的原始值:

$datepick = $_POST['date'];
// wich is 04/12/2014

然后我将它转换为数据库:

$date = date("Y-m-d", strtotime($datepick));

谢谢!

4

3 回答 3

18

如果您的日期类似于“03/02/2014”,那么您可以通过正则表达式简单地清理您的变量:

$date = preg_replace("([^0-9/])", "", $_POST['date']);

这仅允许数字 (0-9) 和正斜杠 (/)。

于 2014-04-13T04:55:04.247 回答
5

格式化日期会对其进行清理,因为:

  1. 如果格式化成功,那么它将只是一个日期,其语法由格式字符串控制。
  2. 如果失败,则返回 FALSE。

这是真的:

DateTime::format
DateTimeImmutable::format
DateTimeInterface::format
date_format()
Date($format, $date_string)
于 2015-03-12T02:35:31.483 回答
1

此表达式可用于支持 12/12/2016 和 12-12-1993 格式。

filter_var (preg_replace("([^0-9/] | [^0-9-])","",htmlentities($input)));
于 2016-08-04T09:11:04.107 回答