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 confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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 confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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 confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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 confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258

  9. #9
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    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 : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    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