消除日期

Mag*_*Man 6 php sanitization input-sanitization

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

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

这将是帖子的原始值:

$datepick = $_POST['date'];
// wich is 04/12/2014
Run Code Online (Sandbox Code Playgroud)

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

$date = date("Y-m-d", strtotime($datepick));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Pau*_*ich 14

如果您的日期类似于"03/02/2014",那么您只需通过regexp清理变量:

$date = preg_replace("([^0-9/])", "", $_POST['date']);
Run Code Online (Sandbox Code Playgroud)

这只允许数字(0-9)和fwd斜杠(/).


Rev*_*EMF 5

设置日期格式可以对其进行清理,因为:

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

以下情况属实:

DateTime::format
DateTimeImmutable::format
DateTimeInterface::format
date_format()
Date($format, $date_string)
Run Code Online (Sandbox Code Playgroud)