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 :

encore un (preg_match_all) [RegEx]


Sujet :

Langage PHP

  1. #21
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    a remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $error = $e->getMessage()

  2. #22
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Korko Fain Voir le message
    habitude d'utiliser ce nom pour une de mes fonctions qui test isset et empty d'ou le is_empty
    Si je puis me permettre, empty() intègre un test isset() (peut-être pas en interne, ça je n'en sais rien, mais dans le résultat il me seble que c'est ainsi)

  3. #23
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    apres plusieur test je peut dire que ca fonctionne pas mal

    le seul truc c'est si je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$verif_rue_maccess = Mols_Verif_Form('#^[a-z0-9 ]+$#i', false, $rue_maccess, $rue_maccess);
    		$erreur .= $verif_rue_maccess;
    ca me retourne une true alors que c'est un champs qui n'est pas obligatoire

    et pour les champs password

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		$verif_pwd_maccess = Mols_Verif_Form('#^[a-z0-9]+$#i', true, $pwd_maccess, $pwd_maccess);
    		$erreur .= $verif_pwd_maccess;	
     
    echo $verif_pwd_maccess;			
     
    		$verif_confirmation_pwd_maccess = Mols_Verif_Form('#^[a-z0-9]+$#i', true, $confirmation_pwd_maccess, $confirmation_pwd_maccess);
    		$erreur .= $verif_confirmation_pwd_maccess;
    quoi que je fasse

    ex : mon*mot-depasse/

    ba ca me retourne la valeur comme si il n'y avais eu aucun test.

    Merci encore bcp ..

  4. #24
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Il nous manque la version actuelle de ta fonction.
    Cela me dérange un peu de faire un try d'un throw explicite... Je n'en vois pas l'intérêt :/
    Tu peux avoir le même résultat (gestion d'erreurs) avec un if/else classique.

  5. #25
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut fonction
    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
    18
    19
    20
    21
    22
    function Mols_Verif_Form($regex, $forced, $content, $error=NULL)
    {
        // Par défaut la valeur de retour est le contenu lui même
        $return = $content;
     
        // On va essayer plusieurs tests.
        try
        {
            if( empty($content) && $forced ) throw new Exception('Variable Vide');
     
            if( ! preg_match($regex, $content) ) throw new Exception('Ne correspond pas');
        }
        // Si on capture une erreur
        catch(Exception $e)
        {
            // La valeur de retour sera alors TRUE
            $return = TRUE;
            $error = $e->getMessage();
        }
     
        return $return;
    }

  6. #26
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Note que le paramètre $error n'est pas en entrée-sortie donc tu n'auras jamais de retour à ce niveau.
    Si tu as un gestionnaire d'exceptions, alors il est possible que tu ne voies pas de problème en effet.

  7. #27
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    j'ai mis un try catch d'un throw explicite pour eviter d'avoir 3 ou 4 niveau de if ou d'etre obligé de faire 50 return dans une fonction.
    Une fonction possède 1 entrée et 1 sortie.

    Pour ce qui est du "$error", je te rappel mon cher Responsable PHP que php5 passe les parametres en référence et non en copie (contrairement à php4) donc $error est en entrée autant qu'en sortie.

    Pour ce qui est du "variable forcée", remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( ! preg_match($regex, $content) )
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( ! preg_match($regex, $content) && $forced )
    Tu dit que pour le mot de passe par exemple, il ne te fait aucune vérification ? avec la regex
    et en mot de passe
    il te retourne pas d'erreur ?

    Et désolé pour le $e->message, je sais pas ce que j'ai parfois j'enchaine les boulettes ^^

    Pour mon cher Yogui, compare ces 2 codes et dit moi lequel est le plus propre à ton avis

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    if( !empty($variable) )
    {
    	if( ! strpos('@', $variable) )
    	{
    		if( preg_match('#^[a-z0-9]+$#i', $variable) )
    		{
    			if( !empty($tableau[$variable) )
    			{
    				echo($tableau[$variable]);
    			}
    			else
    			{
    				echo('erreur indice tableau invalide');
    			}
    		}
    		else
    		{
    			echo('erreur alphanumérique non respecté');
    		}
    	}
    	else
    	{
    		echo('erreur arobase');
    	}
    }
    else
    {
    	echo('erreur variable vide');
    }
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    try
    {
    	if( empty($variable) )
    	{
    		throw new Exception('erreur variable vide');
    	}
     
    	if( strpos('@', $variable) )
    	{
    		throw new Exception('erreur arobase');
    	}
     
    	if( !preg_match('#^[a-z0-9]+$#i', $variable) )
    	{
    		throw new Exception('erreur alphanumérique non respecté');
    	}
     
    	if( empty($tableau[$variable) )
    	{
    		throw new Exception('erreur indice tableau invalide');
    	}
     
    	echo($tableau[$variable]);
    }
    catch(Exception $e)
    {
    	echo( $e->getMessage() )
    }
    Pour ma part je trouve le premier un peu trop... paysage de montagne... Je préfaire la plaine du second...

  8. #28
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Pour ce qui est du "$error", je te rappel que php5 passe les parametres en référence et non en copie (contrairement à php4) donc $error est en entrée autant qu'en sortie.
    Regardes ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     function test($inparam)
     {
     $inparam = 4;
     }
     
    $test = 2;
    echo "Test avant : $test <br/>";
    test($test);
    echo "Test apres : $test";
    ?>
    ca donne
    Test avant : 2
    Test apres : 2

  9. #29
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Les objets sont passés en référence depuis PHP5, mais pas toutes les variables... Merci pour la démo koopajah

    Sinon en effet, c'est intéressant comme technique mais si le développeur a mis en place une gestion automatique des exceptions, ton système tombe à l'eau.

  10. #30
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Yogui Voir le message
    Sinon en effet, c'est intéressant comme technique mais si le développeur a mis en place une gestion automatique des exceptions, ton système tombe à l'eau.
    Je comprends pas pourquoi la? Le gestionnaire qui catche l'exception c'est de toute facon le tout premier catch() rencontré, donc quel que soit le système d'exception placé a plus haut niveau ca n'interferera pas du tout avec ces exceptions là.
    D'ailleurs Korko Fain tu pourrais meme te faire ta propre classe d'exception qui serait capable de stocker le pattern utilisé a ce moment la, la chaine surlaquelle le pattern était appliqué, faire des logs, etc etc. Ca te permettrait en plus de ne catcher QUE les exceptions que tu as définie sans toucher aux autres (ce dont parle peut etre Yogui?)

  11. #31
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Oui non rien, je me suis embrouillé tout seul.

  12. #32
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    ca fonctionne presque nikel

    sauf que lorsque je met

    f
    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
    18
    19
    20
    21
    22
    unction Mols_Verif_Form($regex, $forced, $content, $error=NULL)
    	{
    		// Par défaut la valeur de retour est le contenu lui même
    		$return = $content;
     
    		// On va essayer plusieurs tests.
    		try
    		{
    			if( empty($content) && $forced ) throw new Exception('Variable Vide');
     
    			if( ! preg_match($regex, $content) && $forced ) throw new Exception('Ne correspond pas');
    		}
    		// Si on capture une erreur
    		catch(Exception $e)
    		{
    			// La valeur de retour sera alors TRUE
    			$return = TRUE;
    			$error = $e->getMessage();
    		}
     
    		return $return;
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$verif_prenom_maccess = Mols_Verif_Form('#^[a-z]+$#i', false, $prenom_maccess, $prenom_maccess);
    		$erreur .= $verif_prenom_maccess;
    et que $prenom_maccess = 'dsfsdfdsàfds-/dsf';

    ca ne me retroune pas d'erreur

    Dsl et encore merci

  13. #33
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    Sinon vous m'avez l'air d'etre des bon ouf, j'ai du mal a tout comprendre ce que vous avez mis mais bon

    en tous cas mille merci

  14. #34
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    tu as mis forced à false ^^

    Oui bon ok juste les objets alors ^^
    Bon alors juste devant ça :
    Mais alors juste devant tu rajoute un
    &

    Ce qui te donne
    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
    18
    19
    20
    21
    22
    	function Mols_Verif_Form($regex, $forced, $content, &$error=NULL)
    	{
    		// Par défaut la valeur de retour est le contenu lui même
    		$return = $content;
     
    		// On va essayer plusieurs tests.
    		try
    		{
    			if( empty($content) && $forced ) throw new Exception('Variable Vide');
     
    			if( ! preg_match($regex, $content) && $forced ) throw new Exception('Ne correspond pas');
    		}
    		// Si on capture une erreur
    		catch(Exception $e)
    		{
    			// La valeur de retour sera alors TRUE
    			$return = TRUE;
    			$error = $e->getMessage();
    		}
     
    		return $return;
    	}

  15. #35
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    ca ne change rien :-//

  16. #36
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    il passe a l'as en faisant $prenom = 'fdsfdsé"')à';

    en ete a false

    sinon en true y'a pas de prob

    Merci les gars pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. choix sgbdr (encore!)
    Par _Gabriel_ dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 23/03/2004, 10h39
  3. TEdit (encore)
    Par dj.motte dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/12/2002, 19h02
  4. TPalette (encore)
    Par Flipper dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2002, 23h45

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