Welcome Guest, Not a member yet? Register   Sign In
Date validation?
#27

[eluser]C4iO [PyroDEV][/eluser]
Hey there...

Just want to post my own tweak for the valid_date function suggested here.

Code:
<?php if (!defined('BASEPATH'))    exit('No direct script access allowed');

class MY_Form_validation extends CI_Form_validation {

    function __construct() {
        parent::CI_Form_validation();
    }

    // --------------------------------------------------------------------

    /**
     * Valid Date
     *
     * @access    public
     * @param    string
     * @return    bool
     */

    function valid_date($str) {
        $CI =& get_instance();
        $CI->form_validation->set_message('valid_date', 'O campo %s precisa estar no formato dd/mm/yyyy');

        if (preg_match("/^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$/", $str)) {
            $arr = explode("/", $str);
            $yyyy = $arr[0];
            $mm = $arr[1];
            $dd = $arr[2];
            if (is_numeric($yyyy) && is_numeric($mm) && is_numeric($dd)) {
                return checkdate($mm, $dd, $yyyy);
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}

My tweaks were:

1. Better regex (IMO):
Code:
/^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$/
This will accept dates in the format dd/mm/yyyy, dd mm yyyy, dd.mm.yyyy or dd-mm-yyyy.

It also tries to be more strict in terms of what numbers are entered for day (0 followed by 1 to 9, 1 or 2 followed by 0 to 9, 3 followed by 0 or 1), for month (0 followed by 1 to 9, 1 followed by 0 or 1 or 2) and for year (19 or 20 followed by 0 to 9 restricted to 2 digits)

Preg_match expects "/" before and after the pattern. The "^" sign is "beginning of the pattern" and the "$" sign is "end of the pattern".

2. Ereg is deprecated, so I switched it to preg_match

3. Split is also deprecated, so I switched it to explode

4. I'm brazilian, so I translated the message.


Good coding 4 everyone.


Messages In This Thread
Date validation? - by El Forum - 09-15-2007, 11:21 AM
Date validation? - by El Forum - 09-15-2007, 11:25 AM
Date validation? - by El Forum - 09-15-2007, 12:21 PM
Date validation? - by El Forum - 09-15-2007, 01:08 PM
Date validation? - by El Forum - 09-15-2007, 02:31 PM
Date validation? - by El Forum - 09-16-2007, 06:52 AM
Date validation? - by El Forum - 09-16-2007, 07:46 AM
Date validation? - by El Forum - 09-16-2007, 10:35 AM
Date validation? - by El Forum - 09-16-2007, 11:23 AM
Date validation? - by El Forum - 09-21-2007, 05:45 AM
Date validation? - by El Forum - 08-11-2008, 03:13 AM
Date validation? - by El Forum - 10-27-2008, 05:07 AM
Date validation? - by El Forum - 02-25-2009, 03:26 PM
Date validation? - by El Forum - 06-08-2009, 08:13 AM
Date validation? - by El Forum - 06-08-2009, 03:38 PM
Date validation? - by El Forum - 06-09-2009, 02:17 AM
Date validation? - by El Forum - 09-02-2009, 05:31 PM
Date validation? - by El Forum - 09-11-2009, 02:46 AM
Date validation? - by El Forum - 11-10-2009, 10:30 AM
Date validation? - by El Forum - 12-03-2009, 09:19 PM
Date validation? - by El Forum - 12-03-2009, 11:06 PM
Date validation? - by El Forum - 12-04-2009, 09:19 AM
Date validation? - by El Forum - 07-12-2010, 02:08 PM
Date validation? - by El Forum - 07-12-2010, 03:45 PM
Date validation? - by El Forum - 07-26-2010, 05:00 PM
Date validation? - by El Forum - 10-14-2010, 08:14 AM
Date validation? - by El Forum - 11-06-2010, 05:35 PM
Date validation? - by El Forum - 02-14-2011, 03:27 PM
Date validation? - by El Forum - 01-18-2012, 06:46 PM
Date validation? - by El Forum - 09-26-2012, 08:25 AM
Date validation? - by El Forum - 09-26-2012, 09:49 AM



Theme © iAndrew 2016 - Forum software by © MyBB