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 :

Passage eregi_replace vers preg_replace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut Passage eregi_replace vers preg_replace
    Bonjour à tous,

    Petit souci de regex en fait je veux remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $info = eregi_replace("(^)\\" . $key . "([ ).,])" , "\\1" . $value . "\\2" , $info);
    $string = eregi_replace("([ (])\\" . $key . "([ ).,])" , "\\1" . $value . "\\2" , $info);
    // Par 
    $info = preg_replace('(^)\\' . $key . '([ ).,])' , '\\1' . $value . '\\2' , $info);
    $info = preg_replace('([ (])\\' . $key . '([ ).,])' , '\\1' . $value . '\\2' , $info);
    Mais ça ne fonctionne pas n'étant pas un expert en matière d'expression régulière je bloque.
    Est-ce que quelqu'un à une idée ?

    J'ai cependant réussi à remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ereg_replace("//(.*)","",$t)."<br />");
    // Par
    preg_replace_callback("#//(.*)#",function(){
                return "";
            },$t)."\n");
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ereg_replace("; (\([^)]*\))","",$info);
    // Par
    preg_replace_callback("#; (\([^)]*\))#",function(){
            return "";
        },$info);
    Merci d'avance pour votre aide

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,



    Alternatives to this function include:

    preg_replace() (avec le modificateur i (PCRE_CASELESS))

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Bonjour,

    Merci j'avais vu pour le i mais même en le rajoutant il me supprime tout mon contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $info = preg_replace("(^)\\" . $key . "([ ).,])i" , "\\1" . $value . "\\2" , $info);
    $info = preg_replace("([ (])\\" . $key . "([ ).,])i" , "\\1" . $value . "\\2" , $info);

  4. #4
    Invité
    Invité(e)
    Par défaut
    A tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $info = preg_replace('#(^)\\' . $key . '([ ).,])#Ui' , '\\1' . $value . '\\2' , $info);
    $info = preg_replace('#([ (])\\' . $key . '([ ).,])#Ui' , '\\1' . $value . '\\2' , $info);

    N.B. un des grands spécialistes des regex ici est CosmoKnacki.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Merci pour votre proposition.
    J'ai testé et ça supprime également tout mon contenu.
    J'espère qu'il va tomber sur mon post, c'est pas évident les regex

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    C'est pas facile de se prononcer sans connaître ce qu'il y a dans $key, ce qui pourrait peut-être expliquer la présence des deux antislashes au début de la pattern. L'idéal serait que tu postes le contenu du tableau (un print_r pour avoir les clefs et les valeurs, j'imagine que tout ceci est dans un foreach), voire que tu expliques ce que le code est censé faire, voire que tu postes tout l'extrait de code en question; car généralement dans ces codes un peu vieillots, l'auteur est tellement content d'avoir enfin réussi une pattern qui marche et de s'en être débarrassé qu'il l'enterre vite au fond du jardin, laissant derrière lui un code tout droit sorti de l'Enfer. En d'autres termes, c'est parfois plus simple de reprendre tout le passage.

    D'autre part, vue que les syntaxes diffèrent entre les fonctions ereg qui utilisent la syntaxe POSIX ERE (Extended Regular Expression) et les fonctions preg_ qui utilisent PCRE (Perl Compatible Regular Expression), il est tout à fait possible que des caractères contenus dans $key ne soient pas interprétés de la même manière avec les unes et les autres.

    Concernant les deux preg_replace_callback: cette fonction n'est utile que dans les cas où tu as besoin de transformer d'un façon x ce que tu captures (avec la fonction de callback), si tu n'as pas cette nécessité, preg_replace suffira à ton bonheur, donc:preg_replace("#//.*#", "", $t) et preg_replace("#; \([^)]*\)#", "", $info) (J'ai retiré les groupes de captures qui étaient inutiles.)

    Citation Envoyé par jreaux62 Voir le message
    N.B. un des grands spécialistes des regex ici est CosmoKnacki.
    Merci, de toute manière ici il n'y a que des spécialistes.

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

Discussions similaires

  1. Probléme passage vb6 vers vb Net
    Par dieuzorro dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/04/2007, 12h56
  2. passage mpd vers mcd
    Par walid0577 dans le forum PowerAMC
    Réponses: 1
    Dernier message: 03/04/2007, 09h46
  3. [AVIS] Passage AOL vers NEUF
    Par mr_samy81 dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 21/01/2007, 18h45
  4. Passage état vers Word
    Par lokal64 dans le forum Access
    Réponses: 1
    Dernier message: 28/04/2006, 11h53
  5. Pb Form/sous Form du passage NT vers XP...
    Par toyyo dans le forum IHM
    Réponses: 2
    Dernier message: 25/11/2005, 17h45

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