preg_match sur date
Posté : 08 févr. 2011, 15:32
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
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