Avatar billede lsolesen Nybegynder
22. maj 2010 - 10:52 Der er 1 løsning

PHP: Omskrive ereg() til preg_match()

For længe siden skrev jeg en klasse i php, der bruger ereg(), men det er jo deprecated i php 5.3. Så den skal omskrives til at bruge fx preg_match(), men jeg har brug for en hjælpende hånd ofr at komme i gang.

Formålet med klassen er at man bare kan smide forskellige inputs ind og så finder den ud af, hvordan den skal behandle datoen for at gøre den til en database-variabel. Hvis I har andre ideer lytter jeg meget gerne.

Tak på forhånd. (Der er testklasser på følgende url http://svn.intraface.dk/intrafacepublic/3Party/Ilib_Date/)

[php]
<?php
/**
* Ilib_Date
*
* Takes dates in various formats and converts them to iso YYYY-mm-dd which
* can be used in databases.
*
* <code>
* $date = new Ilib_Date('10-10-2009');
* $date = new Ilib_Date('10 10 2009');
* $date = new Ilib_Date('10/10/2009');
*
* $date->converttodb();
* $date->get(); // outputs 2009-10-10
*
* $date = new Ilib_Date('10-10');
* $date->converttodb();
* $date->get(); // outputs date('Y')-10-10
* </code>
*
* PHP Version 5
*
* @package Ilib_Date
* @author  Lars Olesen <lars@legestue.net>
* @author  Sune Jensen <sj@sunet.dk>
* @license MIT
* @version 1.0.0
*
*/
class Ilib_Date
{
    /**
    * @var string
    */
    private $date;

    /**
    * Constructor
    *
    * @param string $date Various date formats
    *
    * @return void
    */
    function __construct($date)
    {
        $this->date = $date;
    }

    /**
    * Converts date to db-format
    *
    * @param string $default_year Default year if current year will not work
    *
    * @return boolean
    */
    function convert2db($default_year = "")
    {
        // @todo Remember to edit both the validator an this class
        $d = "([0-3]?[0-9])";
        $m = "([0-1]?[0-9])";
        $y = "([0-9][0-9][0-9][0-9]|[0-9]?[0-9])";
        $s = "(-|\.|/| )";

        if ($default_year == "") {
            $default_year = date("Y");
        }

        if (ereg("^".$d.$s.$m.$s.$y."$", $this->date, $parts)) {
            // true
        } elseif(ereg("^".$d.$s.$m."$", $this->date, $parts)) {
            $parts[5] = $default_year;
            // true
        } else {
            return false;
        }

        $this->date = $parts[5]."-".$parts[3]."-".$parts[1];
        return true;
    }

    /**
    * Gets the date
    *
    * @return string
    */
    function get()
    {
        return $this->date;
    }
}
[/php]
Avatar billede lsolesen Nybegynder
22. maj 2010 - 10:57 #1
Flyttet til korrekt kategori http://www.eksperten.dk/spm/910322.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester