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 :

expression reguliere pour remplacement [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de mme_chelaou
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2008
    Messages : 126
    Points : 53
    Points
    53
    Par défaut expression reguliere pour remplacement
    Bonjour,

    Je souhaite trouver une expression qui me fait ça :

    Dans un texte, trouver une chaine qui est de ce format #dd#nimportequoi#ff# (une chaine qui commence toujours par #dd# et termine par #ff#) et me la remplacer par include('nimportequoi.html')

    Pouvez vous m'aider svp ?

    Merci bien

  2. #2
    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 777
    Points
    17 777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $out = preg_replace('~#dd#([^#]+)#ff#~', "include('$1.html')", $in);

  3. #3
    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 : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par julp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $out = preg_replace('~#dd#([^#]+)#ff#~', "include('$1.html')", $in);
    Pas le temps de tester, mais si tu fais ça , php va essayer d'interpoler $1 comme une variable globale, et ça risque de crasher.
    Il est plus sûr d'utiliser les quotes pour délimiter ce genre de chaîne :

    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    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 777
    Points
    17 777
    Par défaut
    ^^ j'avais testé justement et, par définition, une telle variable n'est pas valide en PHP :
    Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. Exprimé sous la forme d'une expression régulière, cela donne : '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
    Donc il ne devrait pas y avoir interpolation (puisque non reconnue comme telle).

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 420
    Points : 1 471
    Points
    1 471
    Par défaut
    Bonjour,

    Si le but est d'insérer la page (include) après l'exécution de preg_replace(), je ne suis pas certain que ça puisse fonctionner, si ?

  6. #6
    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 777
    Points
    17 777
    Par défaut
    En effet, mais ce n'est pas ainsi que j'ai compris sa demande. Sinon, il faudra une évaluation du code (donc option e ou usage de preg_replace_callback). Avec éventuellement certaines limites due à l'inclusion (question de portée notamment) et l'emploi des fonctions de bufferisation (ob_start & co) suivant le but précis recherché.

  7. #7
    Membre du Club Avatar de mme_chelaou
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2008
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Je vous remercie tous pour vos réponses. C'etait bien ce que je cherchais.

    Merci encore

  8. #8
    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 : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par julp Voir le message
    ^^ j'avais testé justement et, par définition, une telle variable n'est pas valide en PHP :

    Donc il ne devrait pas y avoir interpolation (puisque non reconnue comme telle).
    Pour faire ma mauvaise foi, je dirais juste qu'en mettant entre quotes, il n'y a plus de question à se poser, ce qui simplifie le problème.

    J'élargirais même le principe : tant qu'on ne cherche pas expressément à interpoler, il faut utiliser les quotes pour toutes ses chaînes en php.

    Mais si ça marche, c'est le principal.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

Discussions similaires

  1. [RegEx] expression reguliere pour remplacer un mot mais pas un autre
    Par chagam dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2011, 14h32
  2. expression reguliere pour remplacer une string
    Par flash22 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 22/03/2011, 16h43
  3. expression reguliere pour remplacement
    Par wulucie dans le forum Langages fonctionnels
    Réponses: 0
    Dernier message: 22/08/2009, 16h32
  4. Expression régulière pour plusieurs remplacements
    Par mickael99 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/02/2006, 12h15
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

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