Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 13h43   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
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 :
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 :
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="([0-9]+)"&gt;(.+)&lt;/cellule&gt;#isU', '<td colspan="$1">$2</td>', $Content);
		$Content = preg_replace('#&lt;cellule position="(.+)"&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
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h04   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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...
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h09   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
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
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 17h49   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 14
Points : 14
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 :
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 :
<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 :
<cellule> </cellule>

Je me doute que ça à pas l'air très simple, mais au moins maintenant on sais d'où ça vient ^^
Bloody-wave est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h28.


 
 
 
 
Partenaires

Hébergement Web