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 :

Substituer un texte formaté par un autre [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut Substituer un texte formaté par un autre
    Bonjour,

    J'essaie de faire un mini-moteur de blog moi-même.

    Je dois pour ça arriver à substituer un ou des bouts de textes formattés par d'autres textes formattés. Un exemple concret vaut mieux qu'une longue explication :

    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
     
    $montexte =
    "bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    ###3###r### bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla"
     
     
    $montextepret =
    "bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    <img src=\"chemin_images/3.jpg\" alt=\"texte de l'image 3\" class=\"f-right\" /> bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla"
    Y'a-t-il moyen de faire cette substitution avec une seule fonction, rapidement, où y'a-t-il plusieurs manipulation à faire ?

    Merci d'avance de votre coup de pouce...

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Avec la fonction preg_replace().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo preg_replace( '¤###(.*)###(.*)###¤U', '<img src="chemin_images/$1.jpg" class="f-right" />', $montexte );
    C'est dans l'idée, je n'ai pas rempli toutes tes conditions de remplacement.

  3. #3
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut
    Super !
    J'ai été lire les infos du manuel de preg_replace...

    J'ai pas trop pigé grand chose à la théorie obscure de création des patterns, mais celui que tu m'as donné fonctionne à merveille.

    J'ai remplacé tes signes bizarres par des slashs :¤ ¤ U
    ¤###(.*)###(.*)###¤U
    en faisant ceci :

    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
     
    <?php
    $montexte =
    "bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    ###3###right### bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla ###6###left###
    bla bla bla bla bla bla
    bla bla bla bla bla bla
    bla bla bla bla bla bla";
     
    echo preg_replace('/###(.*)###(.*)###/', '<img src="chemin_images/$1.jpg" alt="image id=$1" class="f-$2" />', $montexte );
     
    ?>
    Et ça fonctionne bien comme je voudrais que ça fonctionne...
    Merci beaucoup !!

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Tu devrais laisser le modificateur U, là ton pattern est "gourmand" du fait de l'utilisation de .* donc une partie de ton texte doit disparaître je pense.

  5. #5
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut
    Je veux bien laisser tes signes bizarres, comprenant bien que les .* doivent être très gourmants en ressources, mais le problème, si je laisse ton pattern tel quel, cela ne fonctionne pas, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\wamp_sites\test\index.php on line 17

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Bon, c'est vrai que mes délimiteurs ne sont pas forcément les bons, mais tu pouvais garder les slashes. Je te conseillais juste de rajouter le modificateur U :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('/###(.*)###(.*)###/U', '<img src="chemin_images/$1.jpg" alt="image id=$1" class="f-$2" />', $montexte );

  7. #7
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut
    OK, sur tes bons conseils, je laisserai le U...

    Mais il fait quoi au juste ce "U" ?

    Y-a-t-il un tutoriel sur Developpez.com qui détaille tout ça ?

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931

  9. #9
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Par défaut
    Tout bon ! Merci !

    Il y a tellement de choses intéressantes chez Developpez que c'est pas toujours facile de tout retrouver rapidement.

    Encore merci pour ton aide.

  10. #10
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Les tutoriels Developpez sur les expressions régulières :
    http://php.developpez.com/cours/?page=langage#regexp

    Et dans l'initiation, une description de ce que fait le modificateur U :
    http://g-rossolini.developpez.com/tu...e=page_2#LII-7

    Edit : grillé...

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

Discussions similaires

  1. [WD-2007] texte modifié par un autre texte
    Par mourin78 dans le forum Word
    Réponses: 1
    Dernier message: 03/07/2012, 00h23
  2. Réponses: 1
    Dernier message: 26/03/2008, 20h50
  3. Réponses: 9
    Dernier message: 22/05/2006, 12h21
  4. Remplacer un texte par un autre
    Par Guillaume602 dans le forum C++
    Réponses: 3
    Dernier message: 24/11/2005, 00h40
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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