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 :

Désactiver nl2br dans balise <pre></pre>


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de alexp
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    459
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 459
    Points : 532
    Points
    532
    Par défaut Désactiver nl2br dans balise <pre></pre>
    Bonjour,
    pour la realisation d'un site web dynamique, j'ai recours à la fonction nl2br afin de transformer les sauts de ligne en balise <br /> interprété par les navigateurs. Je suis aussi amené à utiliser les balises <pre></pre> pour mettre en valeur du texte, et c'est là que ça se complique. Lorsque le texte à mettre en valeur tient sur une seule ligne, pas de probleme, mais lorsque le texte est sur plusieurs ligne (sous entendu des sauts de ligne, pas les retours à la ligne auto) pre et nl2br font double emploi, resultat j'obtiens une ligne blanche entre mes lignes de texte.
    J'ai pensé utiliser une regex pour supprimer les balises br se trouvant entre les balises pre, mais ça ne fonctionne que pour la premiere ligne, pour les suivantes ce n'est pas operationnel.
    voici mon code :
    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
    <?php
    $contenu = '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234
    ligne bla 1
    ligne blalbla 2
    ligne blabla 3
    ligne blabla4
    '; $contenu = nl2br($contenu); $contenu = preg_replace('#\[code\](.*?)(<br />)+(.*?)\[/code\]#is', '<pre>$1$3</pre>', $contenu); echo $contenu; ?>
    et le resultat obtenu :
    http://alexleboss2.free.fr
    sachant que le nombre de ligne dans la balise pre varie de 1 à 15 en gros

    Merci d'avance

  2. #2
    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
    Bonjour,

    On doit pouvoir y arriver en utilisant preg_replace_callback, quelque chose comme :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $contenu = preg_replace_callback(
        '#\[code\](.*)\[/code\]#Uis',
        create_function(
            '$matches',
            'return \'<pre>\'.str_replace(\'<br />\', \'\', $matches[1]).\'</pre>\';'
        ),
        $contenu
    );

Discussions similaires

  1. Désactiver saisie dans un input d'une table
    Par dehbi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/03/2006, 18h11
  2. [Swing] Désactiver roulette dans JScrollPane?
    Par Quintoff dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 14/01/2006, 18h39
  3. [XML][XSL]probleme html dans balise xml
    Par chateau64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/12/2005, 11h42
  4. police dans balise input et select
    Par le_ben dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/03/2005, 14h54
  5. Problème formatage dans balise title / alt
    Par jflebegue dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 09/12/2004, 15h18

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