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 :

recuperer sauts de ligne [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Par défaut recuperer sauts de ligne
    Bonsoir tout le monde !

    J'ai deux problèmes sur des regexp et comme cela fait quelques heures que je suis dessus je me permets de vous demander de l'aide....

    Voilà je m'explique je me faisais un système de BBCode pour un site et je suis tombé sur deux soucis:

    - 1 : J'aimerais que l'on puisse créer une liste <ul> donc je me suis fait une balise [ list ] [/ list ] ou chaque élément est représenté par [ * ] mais le problème c'est que lors de l'affichage du texte j'ai mis la fonction PHP nl2br donc il me créé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ul><br />
     <li>azerty <br /></li>
     <li> qwerty<br /> </li>
    </ul>
    donc à cause de cela ma page n'est plus valide W3C... J'aimerais donc savoir comment récupérer dans ma regexp la saut de ligne pour qu'il ne s'affiche plus...

    j'ai essayé (les regexp sont lancés avant l appel a nl2br):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace('#\[list\](\r|\n|\r\n)*(.+)\[/list\]#isU','<ul>$2</ul>',$maVariable)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace('#\[list\](?:(\n|\r|\r\n| )*)(.+)\[/list\]#isU','<ul>$2</ul>',$maVariable)
    Donc si quelqu'un pouvait me venir en aide....

    2 : Le second souci c'est de ne pas exécuter le BBCode lorsque l'on est dans une balise [ code ], là par contre je n'ai aucune piste et ne sais absolument pas par où commencer....


    Merci d'avance à tous pour votre aide !!

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par ZIG-eye Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ul><br />
     <li>azerty <br /></li>
     <li> qwerty<br /> </li>
    </ul>
    donc à cause de cela ma page n'est plus valide W3C... J'aimerais donc savoir comment récupérer dans ma regexp la saut de ligne pour qu'il ne s'affiche plus...
    Bonsoir,
    En quoi est-ce invalide W3C ?
    C'est pas beau et ça ne fait pas ce que tu veux, mais il me semble que c'est correctement formé, non ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Par défaut
    Tout d'abord bonjour et merci pour ta réponse jml94 !!

    Sinon pour te répondre c'est juste qu'un <br /> dans un <ul> il n'apprécie pas des masses...

    si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title> test</title>
    </head>
    <body>
    	<ul> <br />
    		<li> azerty</li>
    		<li> qwerty</li>
    	</ul>
    </body>
    </html>
    il me génère 4 erreurs alors que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title> test BBcode </title>
    </head>
    <body>
    	<ul>
    		<li> azerty</li>
    		<li> qwerty</li>
    	</ul>
    </body>
    </html>
    Il me mets que c'est bien !!

    Sinon j ai commencé a résoudre le problème.

    j ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #\[list\](.+)\[/list\]#isU`<ul>$1</ul>
    #\[\*\](.+)(\r\n|\r|\n)#isU`<li> $1 </li>
    #<ul (.+)>(.+)<li>#isU`<ul $1><li>
    Donc la c'est bon mais le problème c'est si l'on mets plusieurs lignes dans [ * ]

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [ list ]
    [ * ]azerty
    azert
    azer
    aze
    [ * ]qwerty
    [/ list ]
    Il me génère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ul>
    <li>azerty <br /></li>
    azert<br />
    azer<br />
    aze<br />
    <li>qwerty<br /> </li>
    </ul>
    Normal c'est ce que je lui demande mais comment faire pour récupérer la fin de la [ * ] qui n est en fait pas toujours un saut de ligne... ?

    Merci d 'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Par défaut
    c'est bon !!!

    j'ai réussi a m en sortir en utilisant un motif prospectif positif, merci le bouquin sur les expressions régulières !!! Et merci à toi jml94 de t'être intéressé au problème donc au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #\[list\](.+)\[/list\]#isU`<ul style="list-style-type: LIST_S; color : LIST_C; font-style: LIST_I; font-weight : LIST_B; text-decoration: LIST_U;">$1</ul>
    #\[\*\](.+)(?=(</ul>|\[\*\]))#isU`<li> $1 </li>
    #<ul (.+)>(.+)<li>#isU`<ul $1><li>
    Et je peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [ list ]
    [ * ] azerty
    azert
    azer[*] qwerty[*] et encore un test
    [/ list]
    et cela fonctionne niquel !! Tout est valide !!

    Merci à tous !

    Il me reste toujours le probleme pour que les expressions régulières ne s'éxécutent pas dans une balise de type [ code ] mais cela... Je n ai aucune idée sur la facon de procéder... Si quelqu'un a une idée, je suis preneur !!! Merci d'avance !

    Bonne soirée !

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

Discussions similaires

  1. recuperation saut de ligne formulaire
    Par gaetanmm2 dans le forum Langage
    Réponses: 1
    Dernier message: 13/04/2012, 10h47
  2. Saut de ligne sans <br/>
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/06/2007, 11h21
  3. Nombre de sauts de ligne dans un String
    Par Johnbob dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2004, 15h33
  4. Lecture de saut de ligne...
    Par Garion dans le forum C
    Réponses: 5
    Dernier message: 13/02/2004, 11h42
  5. [JTextPane] saut de ligne...
    Par neric dans le forum Composants
    Réponses: 2
    Dernier message: 21/01/2004, 15h01

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