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 qui fonctionne dans un preg_replace mais pas dans un ereg [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut Regex qui fonctionne dans un preg_replace mais pas dans un ereg
    Bonjour.

    j'utilise une expression régulière de recherche d'adresse email (trouvée dans dvp).
    Je l'ai utilisée avec un ereg replace de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine=preg_replace('#\[mail=([-a-z0-9!\#$%&\'*+\\/=?^_`{|}~]+(\.[\-a-z0-9!\#$%&\'*+\\/=?^_`{\|}~]+)*@([[:alnum:]]{1,63}\.)+[[:alnum:]]{2,63})\](.+)\[/mail\]#i','<a href="mailto:$1">$4</a>',$chaine);
    et cela fonctionne parfaitement de cette manière. mais lorsque je l'utilise comme condition dans le ereg:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!(ereg('#([-a-z0-9!\#$%&\'*+\\/=?^_`{|}~]+(\.[\-a-z0-9!\#$%&\'*+\\/=?^_`{\|}~]+)*@([[:alnum:]]{1,63}\.)+[[:alnum:]]{2,63})#iU',$_POST['email'])))
    il m'affiche l'erreur suivante que je n'arrive pas à résoudre(enfin si, mais la regex ne marche plus bien):
    Warning: ereg(): REG_ERANGE in d:\dossiers & prog\programation\php\tryzone\Mail_Admin.Php on line 23
    si vous aviez une idée de l'origine de l'erreur...

    merci
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Heuuu si je ne m'abuse, le ereg est POSIX alors que le preg_replace est PCRE, donc différents niveau syntaxe...

    Ensuite, je suis absolument pas sur de ce que j'avance...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par gloubi
    Heuuu si je ne m'abuse, le ereg est POSIX alors que le preg_replace est PCRE, donc différents niveau syntaxe...
    C'est vrai : les fonctions ereg n'ont pas besoin de délimiteur sinon elles feront partie, pour elles, du motif donc vous pouvez les supprimer et supprimer également les caractères d'échappement devant le caractère délimiteur dans votre expression (vous l'aviez mal choisi donc). De plus, les drapeaux U et i n'ont aussi aucun sens pour ces fonctions et elles considèreront qu'elles font aussi partie du motif.

    J'en viens à cette question : pourquoi ne pas garder les fonctions PCRE plus performantes et plus souples (votre cas le prouve), d'autant plus que les fonctions POSIX vont disparaître (elles seraient déjà désactivées par défaut depuis PHP 5.2) ?

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    he bien... c'est à dire que je ne connais pas l'équivalent PCRE de ereg...
    à vrai dire, j'ignorais que l'un étais posix et l'autre PCRE.

    bon, je vais faire des recherche de ce coté là . par contre, j'espere que y'a pas trop de fonctions "destinée à êtres supprimée" dans mes script...

    merci beaucoup

    PS: c'est bien Preg_matchesqu'il faut utiliser?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par méphistopheles
    PS: c'est bien Preg_match qu'il faut utiliser ?
    Oui.

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

Discussions similaires

  1. Script qui fonctionne dans un onglet mais pas dans un popup
    Par lwolf dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/08/2012, 20h13
  2. Réponses: 11
    Dernier message: 09/09/2010, 02h53
  3. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57
  4. Réponses: 5
    Dernier message: 02/10/2006, 19h24
  5. Applet qui s'execute dans un dossier mais pas dans l'autre
    Par Battosaiii dans le forum Applets
    Réponses: 11
    Dernier message: 10/12/2005, 15h54

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