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 :

Problème avec remplacement de texte structuré [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut Problème avec remplacement de texte structuré
    Salut,

    Après pas mal de temps à bidouiller mon code, je commence à desèsperer quelque peu.

    J'ai un texte avec la structure suivante :
    [chapitre][titre]Mon Titre[/titre]
    mon texte[/chapitre]

    [chapitre][titre]Mon titre 2[/titre]
    Mon texte 2[/chapitre]
    Je peux avoir plusieurs chapitres. Ce que je voudrais, c'est remplacer toutes les balises [chapitre] par une balise <p> et toutes les balises [titre] par une balise <h3>.

    Je voudrais donc obtenir en sortie :
    <p><h3>Mon Titre</h3>
    Mon Texte
    </p>

    <p><h3>mon titre 2</h3>
    Mon texte 2
    </p>
    J'utilise donc la fonction preg_replace avec comme regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#\[chapitre\](.*?)\[titre\](.*?)\[/titre\](.*?)\[/chapitre\]#isU'
    et comme code de sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '<p>$1<h3>$2</h3>$3</p>'
    Et bien sur, cela ne fonctionne pas du tout.

    Dans mon test, j'ai 3 chapitres. Il ne convertit que la derniere balise [titre], et il crée une seule balise <p> tout au début, pour la refermer juste avant la seule balise [titre] qu'il convertit correctement. Donc j'ai quelques balises [titre] et [chapitre] en clair, qui restent telles quelles dans le texte.

    Je doute bien que mon code regex doit être mauvais, mais j'ai beau retourner la situation dans tous les sens, je ne comprends. Autre point noir, l'utilité du code U à la fin de ma regex. J'ai bien compris l'utilité de i et s, mais celle de U est confuse. Sert elle à s'arreter à la première balise fermante rencontrée ? J'ai pas tout compris

    Merci beaucoup. Et n'hésitez pas à demander plus de code si vous en avez besoins. Merci.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je dirai que les expressions régulieres ne sont pas indispensables dans ton cas, tu veux remplacer certains groupes de lettre par autre chose de bien précis, donc ce code devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $trans = array("[chapitre]" => "<p>", "[/chapitre]" => "</p>", "[titre]" => "<h3>", "[/titre]" => "</h3>");
    $resultat = strtr($file, $trans);

  3. #3
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Cela me convient tout à fait et règles simplement tous mes problèmes .

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2007, 00h17
  2. [Conception] Problème avec input type="text"
    Par adrix26 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 10h52
  3. Problème avec affichage de text
    Par SkulD dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 25/10/2006, 15h03
  4. [Tableaux] Problème avec remplacement dans chaîne
    Par Baptiste Wicht dans le forum Langage
    Réponses: 5
    Dernier message: 13/07/2006, 10h04
  5. [Delphi 6] Problème avec la propriété Text d'un composant
    Par bionoir dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/12/2005, 11h23

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