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 :

Supprimer les retours chariots selon les balises qui encapsules le texte


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut Supprimer les retours chariots selon les balises qui encapsules le texte
    Bonjour,

    j'ai un petit souci de retour chariot plutôt étrange. Je suis en train de peaufiner le parser de mon site pour que le rendu soit plus joli avec du css3 etc...

    Comme pour d'autres pages j'ai encapsulé le tableau dans une div, défini la bordure sur cette même div avec mon radius. Tout vas bien.

    Le problème c'est que j'ai deux balises html de retour a la ligne qui se sont invitées et je vois pas trop comment ça se fait. Dans la base de données aucun retour à la ligne n'existe, idem dans les fonctions du parser

    Voici le code html de la page (source navigateur) :
    Code html : 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
    <div class="tab_membre RadiusTop10 RadiusBottom10">
    <br>
    <br>
    <table class="tab_membre">
    <tbody>
    <tr><th>Nom</th><th>Char</th><th>ASCII</th><th>Remplacement Char</th><th>Remplacement ASCII</th></tr>
    <tr><td>Backslash</td><td>\</td><td>92</td><td>\\</td><td>92 92</td></tr>
    <tr><td>Slash</td><td>/</td><td>47</td><td>\/</td><td>47 92</td></tr>
    <tr><td>Espace</td><td>" "</td><td>32</td><td>\s</td><td>92 115</td></tr>
    <tr><td>Pipe</td><td>|</td><td>124</td><td>\p</td><td>92 112</td></tr>
    <tr><td>Bell</td><td>\a</td><td>7</td><td>\a</td><td>92 97</td></tr>
    <tr><td>Backspace</td><td>\b</td><td>8</td><td>\b</td><td>92 98</td></tr>
    <tr><td>Formfeed</td><td>\f</td><td>12</td><td>\f</td><td>92 102</td></tr><tr><td>Nouvelle ligne</td><td>\n</td><td>10</td><td>\n</td><td>92 110</td></tr><tr><td>Retour charriot</td><td>\r</td><td>3</td><td>\r</td><td>92 114</td></tr><tr><td>Tabulation horizontale</td><td>\t</td><td>9</td><td>\t</td><td>92 116</td></tr>
    <tr><td>Tabulation verticale</td><td>\v</td><td>11</td><td>\v</td><td>92 118</td></tr>
    </tbody>
    </table>
    </div>

    La fonction php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	private function Table($Content)
    	{
    		$Content = preg_replace('#&lt;tableau&gt;(.+)&lt;/tableau&gt;#isU', '<div class="tab_membre RadiusTop10 RadiusBottom10"><table class="tab_membre">$1</table></div>', $Content);
    		$Content = preg_replace('#&lt;ligne&gt;(.+)&lt;/ligne&gt;#isU', '<tr>$1</tr>', $Content);
    		$Content = preg_replace('#&lt;entete&gt;(.+)&lt;/entete&gt;#isU', '<th>$1</th>', $Content);
    		$Content = preg_replace('#&lt;cellule&gt;(.+)&lt;/cellule&gt;#isU', '<td>$1</td>', $Content);
    		$Content = preg_replace('#&lt;cellule colonne=&quot;([0-9]+)&quot;&gt;(.+)&lt;/cellule&gt;#isU', '<td colspan="$1">$2</td>', $Content);
    		$Content = preg_replace('#&lt;cellule position=&quot;(.+)&quot;&gt;(.+)&lt;/cellule&gt;#isU', '<td class="$1">$2</td>', $Content);
    		return $Content;
    	}
    Ce qui me gêne c'est les deux <br> situé entre la div et le début du tableau. je ne vois pas d'où ils sortes mais ils font vraiment tâche :


    le screen est de mauvaise qualité, ça fait pas dégueulasse comme ça online

    Voilà, si vous avez des idées, je suis preneur

    Merci d'avance, Bloody-wave

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    une petite fonction nl2br() qui traine ? même si tu es en PHP5... en tout cas ça ne viens pas du php que tu nous montres...

  3. #3
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    oui j'ai bien une fonction nl2br qui est à la fin du parser, mais comme indiqué dans la source plus haut, je ne fait aucun retour à la ligne entre la div et le tableau..

    je continue a chercher mais je sèche. Quand j'enlève nl2br ça fonctionne mais tout est hyper compact donc c'est pas le résultat souhaité et si j'essaie d'ajouter une fonction pour supprimer les retours entre la div et le tableau ça ne fonctionne pas :p

  4. #4
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    Bon, j'ai trouvé ce qui ne va pas, je vais expliquer de manière simple, je n'ai toujours pas la solution par contre :p

    quand je fais un tableau sur mon forum ça se passe comme ceci :
    Code xml : 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
    <tableau>
    <ligne>
    <entete>Titre colone 1</entete>
    <entete>Titre colone 2 </entete>
    </ligne>
    <ligne>
    <cellule>Contenu colone 1</cellule>
    <cellule>Contenur colone 2</cellule>
    </ligne>
    <ligne>
    <cellule position="centre">Contenu colone 1 centré</cellule>
    <cellule>Contenu colone 2</cellule>
    </ligne>
    <ligne>
    <cellule taille="2">Contenu sur colone 1 et 2</cellule>
    </ligne>
    </tableau>

    Donc grossomodo, le souci vient des retours à la ligne dans le code brut (ci dessus) qui sont interprétés par ma fonction, pas de chance ça les renvois entre la div et la table...

    Ma question est donc, comme supprimer tout retour à la ligne qui sont contenus entre :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="tab_membre RadiusTop10 RadiusBottom10"><table class="tab_membre">(.+)</table></div>
    mais par contre je dois pouvoir les interpréter si ils sont entre :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <cellule> </cellule>

    Je me doute que ça à pas l'air très simple, mais au moins maintenant on sais d'où ça vient ^^

Discussions similaires

  1. [RegEx] Supprimer les retours chariots de trop
    Par Alexandrebox dans le forum Langage
    Réponses: 18
    Dernier message: 20/01/2009, 16h24
  2. supprimer les retour chariot
    Par battit64 dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/03/2008, 16h42
  3. Retours chariot entre les balises HTML
    Par micfont999 dans le forum Langage
    Réponses: 3
    Dernier message: 09/10/2007, 19h45
  4. Supprimer les retours chariots d'une chaine
    Par alexdfr dans le forum Delphi
    Réponses: 7
    Dernier message: 03/10/2006, 09h57
  5. Réponses: 1
    Dernier message: 11/01/2006, 11h58

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