Page 1 sur 1

preg_match sur date

Posté : 08 févr. 2011, 15:32
par Invité
Bonjour à tous,

j'ai une chaine de caractère représentant une date, comme ceci
$date = gmdate("YmdHis", time()); // retourne 20110208132142

J'essaye d'appliquer une expression régulière à $date afin d'obtenir le résultat suivant:
$output = array("Y","m","d","H","i","s");

J'ai tenté ceci :
$date = gmdate("YmdHis", $time());
preg_match_all('/^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/', $date, $output, PREG_SET_ORDER);

print_r($output) me donne:

Array
(
[0] => Array
(
[0] => 20110208132656
[1] => 2011
[2] => 02
[3] => 08
[4] => 13
[5] => 26
[6] => 56
)

)

Ce que je ne comprends pas:
1- pourquoi j'ai deux arrays imbriqués et pas juste 1?
2- pourquoi $output[0] contient la chaine d'origine?
3- je ne trouve pas le pattern très optimisé, comment réécrire ceci plus efficacement?

En vous remerciant pour vos réponses

Re: preg_match sur date

Posté : 08 févr. 2011, 15:35
par stealth35
1- pourquoi j'ai deux arrays imbriqués et pas juste 1?
2- pourquoi $output[0] contient la chaine d'origine?
parce que t'as utilisé preg_match_all au lieu de preg_match
3- je ne trouve pas le pattern très optimisé, comment réécrire ceci plus efficacement?
simplement utiliser date_parse
print_r(date_parse('20110208132142'));
/*
Array
(
    [year] => 2011
    [month] => 2
    [day] => 8
    [hour] => 13
    [minute] => 21
    [second] => 42
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 
)
*/

Re: preg_match sur date

Posté : 08 févr. 2011, 15:47
par Invité
snif...c'est bô...merci