IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Regex pour créer un timestamp avec mktime [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Regex pour créer un timestamp avec mktime
    Déjà mon deuxième post ici, faudrait pas qu'je m'habitue à trop me faire aider

    Mon problème est simple (enfin non pas vraiment) : j'voudrais créer une regex pour analyser le contenu d'un champ de saisi et en faire sortir un timestamp avec mktime.

    En plus clair :
    - l'utilisateur voit un champ de saisi (input type text) et y rentre les infos
    - il peut mettre une date : 18/10 ou 18/10/90 ou 18/10/1990
    - il peut mettre une heure : 18h32 ou 18:32 ou 18h
    - il peut mettre les deux : 18/10 18h ou 18/10/1990 18h32 ou etc ...
    - après la regex se charge de récupérer les infos et la fonction php mktime transforme tout ça en un timestamp

    Ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $tps_min = $_GET['tps_min'];
    $regex_tps = "#(([0-9]{1,2})/([0-9]{1,2})(/([0-9]{2,4}))?)?[ ]{0,3}(([0-9]{1,2})[h:]([0-9]{1,2})?)?#";
    if (preg_match($regex_tps, $tps_min, $valeur_min))
    {
    $jour = $valeur_min[2];
    $mois = $valeur_min[3];
    $annee = $valeur_min[5];
    $heure = $valeur_min[7];
    $minute = $valeur_min[8];
    $timestamp_min = mktime('$heure', '$minute', '', '$mois', '$jour', '$annee');
    }
    Or si je fais un echo $timestamp_min; il me sort "-1" quoi qu'il arrive ...
    Sauf si je ne remplis pas le champ, auquel cas il m'affiche la valeur par défaut que j'ai paramétrée ...

    Quelqu'un a une idée de mon erreur ?

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Salut,

    Ton erreur principale est que tu mets tes variables entre simple quotes.

    J'ai amélioré un peu le tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $regex_tps = "#(?:([0-9]{1,2})/([0-9]{1,2})(?:/([0-9]{2,4}))?)? *(?:([0-9]{1,2})(?:h|:)([0-9]{1,2})?)?#"; 
     
    if (preg_match($regex_tps, $tps_min, $valeur_min)) 
    {
    	if( !empty($valeur_min[1]) )
    	{
    		$jour = $valeur_min[1]; 
    		$mois = $valeur_min[2];  
    	}
    	else
    	    list($jour, $mois) = explode('/', date('d/m'));
    	$annee = !empty($valeur_min[3]) ? $valeur_min[3] : date('Y');
    	$heure = !empty($valeur_min[4]) ? $valeur_min[4] : date('h');
    	$minute = !empty($valeur_min[5]) ? $valeur_min[5] : date('i');
     
    	$timestamp_min = mktime($heure, $minute, 0, $mois, $jour, $annee);
    }
    J'ai mit les valeurs dates actuelles par défaut si elles ne sont pas renseignées, à toi de voir.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Pour les valeurs par défaut il me semble que mktime met automatiquement les valeurs actuelles lorsqu'il n'y en a pas, non ?

    Pour le reste je testes et j'essaie de comprendre, merci pour ton aide

    Edit : Après lecture attentive je penses avoir compris le code mais ça a l'air d'être légèrement abrégé J'connaissais pas cette façon de formuler ...

    Edit 2 : Eh bah ça marche niquel ! Merci beaucoup à toi

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Citation Envoyé par Viper13
    Pour les valeurs par défaut il me semble que mktime met automatiquement les valeurs actuelles lorsqu'il n'y en a pas, non ?
    A vrai dire, j'en sais rien, je ne me sert jamais de cette fonction et du timestamp php

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2003] Script pour créer un fichier avec une dénomination.
    Par ERFESA dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 08/02/2010, 19h34
  2. Réponses: 1
    Dernier message: 03/04/2009, 13h51
  3. Besoin de conseils pour créer une page avec un avatar
    Par cedric/copy dans le forum ASP
    Réponses: 5
    Dernier message: 02/04/2009, 13h46
  4. utiliser mpi pour créer le paraléllisme avec le builder c++
    Par randa84 dans le forum Développement
    Réponses: 1
    Dernier message: 21/02/2007, 13h41
  5. Réponses: 7
    Dernier message: 29/08/2006, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo