preg_match sur date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : preg_match sur date

Re: preg_match sur date

par Invité » 08 févr. 2011, 15:47

snif...c'est bô...merci

Re: preg_match sur date

par stealth35 » 08 févr. 2011, 15:35

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] => 
)
*/

preg_match sur date

par Invité » 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