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 :

ereg vers preg_match [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut ereg vers preg_match
    Coucou,

    Je dois etre neuneu mais j'arrive pas a migrer mes expressions régulières ereg vers preg_match ...

    Plus precisemment :
    Ereg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modele = "<!-- BEGIN toto-->(.*)<!-- END toto-->";
    Celui la il est ok

    preg_match :
    ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modele = "/<!-- BEGIN toto -->(.*)<!-- END toto -->/";

    J'ai cale les delimiters, j'ai essaye d'escape un peu tout mais ca va pas ...

    Et deuxième question accessoire, quand je fais ca, il va du 1er BEGIN bloc au denrier END bloc, ce qui fait que si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <!-- BEGIN toto -->
    contenu
    <!-- END toto -->
    <!-- BEGIN toto -->
    contenu
    <!-- END toto -->
    il va me prendre le premier begin au dernier end, donc ma chaine de sortie sera :
    contenu
    <!-- END toto -->
    <!-- BEGIN toto -->
    contenu
    Un moyen d'éviter ca ?

    D'avance merci.


  2. #2
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Je pense avoir déjà la réponse pour la 2eme question :

    mettre un U comme paramètre à savoir Ungreedy et fait devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modele = "#<\!-- BEGIN toto -->(.*)<\!-- END toto -->#U";
    les \ servent à echapper les ! qui sont des caractère spéciaux pour les regex PCRE et le U est Ungreedy donc...

    Bon pour ta deuxième question je pense avoir bon mais la premier pas sur ... On verra

  3. #3
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $modele = "#<\!-- BEGIN $nomBloc -->(.*)<\!-- END $nomBloc -->#U";
     
    print $modele;
     
    $regs = preg_match($modele, $element, $retour);
     
    print "bloc $nomBloc";
     
    die(var_dump($retour));
    Me renvoi :
    #<\!-- BEGIN cheminDeFer -->(.*)<\!-- END cheminDeFer -->#U
    bloc cheminDeFer
    array(0) { }
    Un tableau vide, c'est qu'il a rien trouve ...

  4. #4
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    parce qu'il croit que $bloc est du texte et non une variable j'imagine non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modele = "#<\!-- BEGIN '$nomBloc' -->(.*)<\!-- END $nomBloc -->#U";
    voir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $modele = "#<\!-- BEGIN ".$nomBloc." -->(.*)<\!-- END $nomBloc -->#U";

  5. #5
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Pour le nom de variable, je ne pense pas que ca vienne de la, ca c'est verifie sur ereg, donc pas de raisons que ca pose un soucis sur preg_match. J'ai essaye quand meme et ca ne change rien ^^.

    (Merci pour tes suggestions tout de meme)

  6. #6
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Donc bon je vais essayer de refaire ça...^^ (sachant que je suis un débutant dans les Regex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern="#<\!--\sBEGIN toto\s-->(.*)<\!--\sEND toto\s-->#iU"

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par keaton2000 Voir le message
    Et deuxième question accessoire, quand je fais ca, il va du 1er BEGIN bloc au denrier END bloc, ce qui fait que si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <!-- BEGIN toto -->
    contenu
    <!-- END toto -->
    <!-- BEGIN toto -->
    contenu
    <!-- END toto -->
    il va me prendre le premier begin au dernier end, donc ma chaine de sortie sera :


    Un moyen d'éviter ca ?

    D'avance merci.

    Bonjour,

    Il n'est pas facile de répondre sans savoir ce que tu souhaiterais comme chaîne de sortie.

  8. #8
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    2 remarques :
    D'abord merci pour votre aide pour le remplacement, la difference de traitement n'est pas subtile, elle est effarante, les pages qui moulinaient pour se charger (avec des boucle de replace genre pagination) se chargent a une allure normale maintenant. C'est classe.

    Pour le 1 ou dernier element trouve,le #U fonctionne, merci.

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

Discussions similaires

  1. [RegEx] mise a jour ereg > preg_match pas moyen de trouver comment faire
    Par atc666 dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2015, 00h03
  2. [PHP 5.3] Mise a jour de eregi vers preg_match
    Par guy2004 dans le forum Langage
    Réponses: 0
    Dernier message: 07/08/2013, 18h09
  3. [RegEx] De eregi vers preg_match
    Par Rash31 dans le forum Langage
    Réponses: 6
    Dernier message: 19/10/2009, 09h41
  4. [RegEx] ereg vers preg_match pour structure Html valide
    Par Jopzeut dans le forum Langage
    Réponses: 2
    Dernier message: 20/04/2009, 10h53
  5. Réponses: 1
    Dernier message: 13/05/2002, 09h19

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