Melange de bbcode et html avec la fonction "nl2br" [résolu] - PHP - Programmation
Marsh Posté le 03-01-2004 à 17:13:57
le nl2br fait le sur le texte avant de l'insérer dans la base
Marsh Posté le 03-01-2004 à 17:16:15
oui mais en fait, pour entrer dans la base ainsi que pour editer le texte, je passe par un texte area qui de coup se retrouve avec du bbcode et du html melangé
Marsh Posté le 03-01-2004 à 17:17:14
ha, dans le textarea fait un str_replace("<br />","",$ton_texte);
Marsh Posté le 03-01-2004 à 17:17:47
Je precise que le bbcode sera toujours hors des balises <body>
Marsh Posté le 03-01-2004 à 17:18:31
bodbod a écrit : Je precise que le bbcode sera toujours hors des balises <body> |
pourquoi cela ?
le contenu doit toujours se trouver dans le body !
Marsh Posté le 03-01-2004 à 17:20:44
Bon alors on ne se comprend pas trop.
Voici une partie du texte dans la base :
[taille=grand][align=centre]Limoges avril 2004[/align][/taille]<br>
<body vlink="#0000FF" bgcolor="#FFFDF2" leftMargin=0 topMargin=0 rightMargin=0>
<TABLE width=100% border=0 align="center" cellPadding=0
...
</TR>
</TBODY>
</TABLE>
</body>
Merci de votre compréhension
[color=#FF0000] SONDAGE REOUVERT,
VOUS POUVEZ Y ALLER MAINTENANT [/color]
[taille=petit]Organisateurs : mmarques et mr_alexxxx
Gestion : mmarques[/taille]
bbcode
htmle
Marsh Posté le 03-01-2004 à 17:20:45
bodbod a écrit : oui mais en fait, pour entrer dans la base ainsi que pour editer le texte, je passe par un texte area qui de coup se retrouve avec du bbcode et du html melangé |
ben apres à l'edition entre les balises textarea tu mets :
<? echo str_replace("<br />","",$tontexte); ?>
Marsh Posté le 03-01-2004 à 17:23:05
bodbod a écrit : Bon alors on ne se comprend pas trop. |
Pourquoi réouvrir un <body>, j'imagine qu'il doit etre deja ouvert non ?
Marsh Posté le 03-01-2004 à 17:23:38
kyle a écrit : |
En fait c'est une partie de code qui est inclue dans une autre page. Et sans passer par les balise <body>, les tableau sont tout deformé.
En mettant les balide, ca revient un peu a faire un include
Marsh Posté le 03-01-2004 à 17:27:03
kyle a écrit : |
Oui mais en mettant le html sans les balise, les tableau sont tout deformé.
En fait, c'est un tableau qui entre dans d'autre tableau.
Marsh Posté le 03-01-2004 à 17:28:58
bodbod a écrit : En fait c'est une partie de code qui est inclue dans une autre page. Et sans passer par les balise <body>, les tableau sont tout deformé. |
pas tres propre tout ca
si tes tableaux sont explosés c'est qu'il y a un probleme de montage de la page...
Marsh Posté le 03-01-2004 à 17:31:39
kyle a écrit : |
Ben oui mais le probleme, c'est que c'est pas moi qui est fait le code html
Ou sinon, c'est un peu de la bidouille, mais y a t il un moyen d'enlever le <br> qui pourrait se trouver entre les deux balides.
Tu voix ce que je veux dire :
Selection la partie qui se trouve entrre <body> et y remplcer tout les <br>
Marsh Posté le 03-01-2004 à 17:33:21
on te l'a dit plus haut 2 fois :
<textarea><? echo str_replace("<br />","",$tontexte); ?></textarea>
Marsh Posté le 03-01-2004 à 17:37:40
kyle a écrit : on te l'a dit plus haut 2 fois : |
on se comprend pas trop
En fait une partie du textarea dois avoir les <br>(bbcode) et l'autre partie ne dois pas en avoir (html)
Marsh Posté le 04-01-2004 à 11:07:40
Bon apres qq heure, j'ai ete obligé de bidouiller un truc qui me plait que moyennement mais comme ca marche.
Je passe d'abord un nl2br au debut,
ca met un <br /> a chaque retour.
Ensuite je remplace le ><br /> par > qui a pour effet de supprimé le <br /> qui se trouve a travers le code html et le tour est joué.
Seul contrainte, avoir un code html propre pour que chaque ligne finnissent par un >
merci
Marsh Posté le 04-01-2004 à 12:28:15
ske tu peux peut-etre faire c'est un nouveau tag genre [html] et tout ce qui est dedans tu ne lui appliques pas de nl2br();
Marsh Posté le 04-01-2004 à 16:16:16
chamois a écrit : ske tu peux peut-etre faire c'est un nouveau tag genre [html] et tout ce qui est dedans tu ne lui appliques pas de nl2br(); |
Comment tu fais ca ?
C'est en fait ce que je cherche
Marsh Posté le 07-01-2004 à 20:42:14
dans la base, tu enregistres le code avec le sauts de lignes bruts, saisis depuis le textarea
juste avant un affichage, faut passer nl2br, sauf si l'affichage se fait dans un textarea
Marsh Posté le 07-01-2004 à 21:05:41
non ben vous avez pas l'air d'avoir compris mon expliquation. Surement moi qui m'exprime mal.
Voici un exemple de texte dans le textarea :
Code : |
Et la on voit bien que les <br> vont trainer a travers le html mais sera tres bien placé dans le bbcode situé au debut et a la fin
Marsh Posté le 08-01-2004 à 02:22:04
preg_replace(#(l'expression qui matche jusque ta table)(<table.../table> )(le reste)#(ici faut mettre le code pour qu'il interprète la chaine de sortie),nl2br($1).$2.nl2br($3),$tontext)
C'est méga lour à lire , je sais mais ça marche. Cherche un peu.
Marsh Posté le 08-01-2004 à 20:56:59
$var = preg_replace("#(XX|</table> )(.*?)(<table> )(.*?)(</table> )(.*?)(<table>|YY)#si", $1.nl2br($2).$3.$4.nl2br($6).$6, $var);
Un truc qui ressemblerai un peu a ca ?
Par contre, a XX et YY, je sais pas trop quoi mettre XX correspondrai au debut debut et YY a la fin.
Si j'ai mis les XX|</table> et l'autre, c'est pour prevoir le melange de plsieur partie bbcode html.
Marsh Posté le 09-01-2004 à 00:11:48
je crois qu'il faut mettre esi et non si tout seul. Le e activerait l'interprétation php de la chaine de retour.
$var = preg_replace("#?!(<table>.*?</table> )#esi",nl2br('\\1'),$var);
CA doit marcher un truc du genre. Ca prend tout ce qui n'est pas entre balises table et applique le traitement. Pas le temps de vérifier
Marsh Posté le 09-01-2004 à 18:07:39
belgique a écrit : je crois qu'il faut mettre esi et non si tout seul. Le e activerait l'interprétation php de la chaine de retour. |
Warning: Compilation failed: nothing to repeat at offset 0 in c:\serveur\www\bouffe.php on line 56
Marsh Posté le 09-01-2004 à 18:32:15
$var = preg_replace("#?!(<table>.*?</table> )#esi","nl2br('\\1')",$var);
C'est peut ere toujours incorrect mais bon, cherche un peu
Marsh Posté le 09-01-2004 à 19:26:01
$var = preg_replace("#(.*?)(<table>.*?</table> )#esi","nl2br('\\1')",$var);
En faisant ca, le message disparait mais le resultat n'est pas au rdv.
Je crois que je vais finir par garder ma methode barbare.
Marsh Posté le 09-01-2004 à 20:16:14
$var = preg_replace("#(?!(<table>.*?</table> ))#esi","nl2br('\\1')",$var);
et ça?
Marsh Posté le 09-01-2004 à 21:30:17
Ben y a plus d'erreur, tout les truc sont affiché mais y a pas de saut de ligne
La fonction preg_replace, j'arrive a me debrouiller quand c'est simple mais la j'ai du mal a suivre.
Marsh Posté le 09-01-2004 à 21:48:55
$var = preg_replace("#<table>(.*?)</table>#esi","'<table>'.stripslashes(str_replace('<br />','','\\1')).'</table>'",$var);
Ca devrait marcher ça. Tu fais un nl2br avant sur var.
Marsh Posté le 09-01-2004 à 22:20:34
OK ca roule, j'ai tres legerement modifié le truc pour mettre une balise "special".
$var = preg_replace("#<body>(.*?)</body>#esi","'<body>'.stripslashes(str_replace('<br />','','\\1')).'</body>'", $var );
Au debut, ca marchait pas car mes balise <table> etait plutot de genre <table .....></table>
Je pense que je vais creer des balise que je vais nommé [html] dans lequel tout code html devra se trouver
Marsh Posté le 09-01-2004 à 22:49:19
Tu peux faire : $var = preg_replace("#<table(.*?)</table>#esi","'<table'.stripslashes(str_replace('<br />','','\\1')).'</table>'",$var);
Marsh Posté le 09-01-2004 à 22:51:44
Ah oui, c'est vrai aussi ca
Enfin bon, je vais voir ca avec le futur utilisateur.
merci a toi
Marsh Posté le 03-01-2004 à 17:10:49
Bonjour a tous,
Voila je me retrouve face a un petit probleme.
J'ai un texte dans la base que je sors en faisant un $var = nl2br($var) ; pour ajouter des saut de lignes.
Mais la ou ca cloche, c'est quand je veux ajouter un peux de html.
Car du coup, il me met un <br> entre les balides.
Y a t il un moyen d'utiliser nl2br partout sauf entre deux indicateurs. Pour moi, les indicateur serait <body> et </body> car j'ai ces balises en debut/fin de code html.
merci
Message édité par bodbod le 09-01-2004 à 22:20:59