Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1179 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] BBCode vers html problème avec <br>

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] BBCode vers html problème avec <br>

n°826102
r3llik
Posté le 18-08-2004 à 20:57:13  profilanswer
 

Bonjour,
 
J'ai fait un script pour transformer du BBCode vers html.
Mais il me reste un problème à régler : comment faire pour que les "à la ligne" soient transformer en <br> ??
 
Merci
 
extrait du script :

Code :
  1. $msg = preg_replace("/(\[b\])(.*?)(\[\/b\])/si", "<b>\\2</b>", $msg);

mood
Publicité
Posté le 18-08-2004 à 20:57:13  profilanswer
 

n°826103
simogeo
j'ai jamais tué de chats, ...
Posté le 18-08-2004 à 20:57:54  profilanswer
 

nl2br()


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°826104
r3llik
Posté le 18-08-2004 à 21:06:03  profilanswer
 

Merci mais ke dois-je en faire ?
désolé je suis pas très callé en php...

n°826119
simogeo
j'ai jamais tué de chats, ...
Posté le 18-08-2004 à 21:38:19  profilanswer
 

Code :
  1. $nl2br_msg = nl2br($msg);
  2. echo '<p>';
  3. echo 'avant nl2br() :<br />';
  4. echo $msg;
  5. echo '</p>';
  6. echo '<p>';
  7. echo 'après nl2br() :<br />';
  8. echo $nl2br_msg;
  9. echo '</p>';


Message édité par simogeo le 18-08-2004 à 21:56:18

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°826174
MrFredG
Posté le 18-08-2004 à 22:48:57  profilanswer
 

ou quelque chose comme ca :
$msg=preg_replace("/\n/",'<br/>',$msg);

n°826210
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 18-08-2004 à 23:09:34  profilanswer
 

MrFredG a écrit :

ou quelque chose comme ca :
$msg=preg_replace("/\n/",'<br/>',$msg);

C'est la meilleure soluution pour l'intégrer en continuité du reste.


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°826216
simogeo
j'ai jamais tué de chats, ...
Posté le 18-08-2004 à 23:11:53  profilanswer
 

.... vraiment n'importe quoi [:kiki]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°826227
MrFredG
Posté le 18-08-2004 à 23:17:34  profilanswer
 

en utilisant preg_replace sur des array() ca devient intéressant et clair. Or c 'est généralement le cas quand on traite du bbcode.
 

n°826242
simogeo
j'ai jamais tué de chats, ...
Posté le 18-08-2004 à 23:22:07  profilanswer
 

les regexs sont super gourmandes en terme de ressource! C'est complétement stupide de le traiter avec des regex alors qu'une fonction simple et optimisée est dédiée à ce traitement....


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°826256
MrFredG
Posté le 18-08-2004 à 23:28:53  profilanswer
 

sauf qu'on traite tout avec une seule instruction dans ce cas la.

mood
Publicité
Posté le 18-08-2004 à 23:28:53  profilanswer
 

n°826340
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 19-08-2004 à 00:12:37  profilanswer
 

simogeo a écrit :

les regexs sont super gourmandes en terme de ressource! C'est complétement stupide de le traiter avec des regex alors qu'une fonction simple et optimisée est dédiée à ce traitement....

Apparement tu ignore comment un certain nombre de forums (dont celui-ci d'ailleurs) font par afficher tes posts ...


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°827583
rick@r
coin coin coin
Posté le 20-08-2004 à 11:32:49  profilanswer
 

J'ai une petite question en rapport avec le bbcode moi aussi :)
Je voudrais savoir en fait comment on fait, au niveau des boutons, pour que quand on clique une fois sur un bouton il insère [*img] et quand on rappuie il insère [*/img].

n°827643
burgergold
5$? va chez l'diable!
Posté le 20-08-2004 à 12:29:07  profilanswer
 

simogeo a écrit :

les regexs sont super gourmandes en terme de ressource! C'est complétement stupide de le traiter avec des regex alors qu'une fonction simple et optimisée est dédiée à ce traitement....


 
en php je sais pas, mais en perl, les regexp c pas mal dans squia de plus performant pour faire ce genre de truc


---------------
http://www.boincstats.com/signature/user_664861.gif
n°827681
belgique
Posté le 20-08-2004 à 13:38:52  profilanswer
 

En attendant un str_replace est toujours plus rapide qu'une regexp :o

n°827842
simogeo
j'ai jamais tué de chats, ...
Posté le 20-08-2004 à 15:43:51  profilanswer
 

Gilbert Gosseyn a écrit :

Apparement tu ignore comment un certain nombre de forums (dont celui-ci d'ailleurs) font par afficher tes posts ...


 
[:kiki]
Oui les regex sont indispensables pour l'ubb code ... mais pour transformer les saut de ligne en <br /> faut vraiment être manche pour le coder de la sorte [:boidleau]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°827894
masklinn
í dag viðrar vel til loftárása
Posté le 20-08-2004 à 16:21:25  profilanswer
 

[troll]t'es sur un JoceForum ca te suffit pas?[:rofl][/troll]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°827940
drasche
Posté le 20-08-2004 à 16:59:44  profilanswer
 

nl2br bordel :o
ptain vous avez une fonction spécialisée pour le faire et vous la laissez de côté [:kiki]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°827977
naceroth
Posté le 20-08-2004 à 17:49:07  profilanswer
 

drasche a écrit :

nl2br bordel :o
ptain vous avez une fonction spécialisée pour le faire et vous la laissez de côté [:kiki]


 
Y aura toujours des gens pour réinventer l'eau chaude, que veux tu :)
 

Citation :

Je voudrais savoir en fait comment on fait, au niveau des boutons, pour que quand on clique une fois sur un bouton il insère [*img] et quand on rappuie il insère [*/img].


 
C'est du javascript ça. J'avais fait un tableau avec les types de balises comme clés et en fonction du contenu j'affichais la balise ouvrante ou fermante :)

n°828023
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 20-08-2004 à 19:28:55  profilanswer
 

simogeo a écrit :

[:kiki]
Oui les regex sont indispensables pour l'ubb code ... mais pour transformer les saut de ligne en <br /> faut vraiment être manche pour le coder de la sorte [:boidleau]

Code :
  1. $search = array(
  2. "/\[img\](http|https|ftp|mms):&#47;&#47;(\S+)\[&#47;img\]/si",
  3. "/\[center\](.+?)\[&#47;center\]/si",
  4. "/\[left\](.+?)\[&#47;left\]/si",
  5. "/\[right\](.+?)\[&#47;right\]/si",
  6. "/\[justify\](.+?)\[&#47;justify\]/si",
  7. "/\[taille1\](.+?)\[&#47;taille1\]/si",
  8. "/\[taille2\](.+?)\[&#47;taille2\]/si",
  9. "/\[taille3\](.+?)\[&#47;taille3\]/si",
  10. "/\[spoiler\](.+?)\[&#47;spoiler\]/si",
  11. "/\[pano\](.+?)\[&#47;pano\]/si",
  12. "/\[smilie\](.+?)\[&#47;smilie\]/si",
  13. "/\[g\](.+?)\[&#47;g\]/si",
  14. "/\[i\](.+?)\[&#47;i\]/si",
  15. "/\[s\](.+?)\[&#47;s\]/si",
  16. "/\[strike\](.+?)\[&#47;strike\]/si",
  17. "/\[x\](.+?)\[&#47;x\]/si",
  18. "/\[url=(http|https|ftp|mms):&#47;&#47;(.+?)\](.+?)\[&#47;url\]/si",
  19. "/\[url=(\S+)\](.+?)\[&#47;url\]/si",
  20. "/\[url\](.+?)\[&#47;url\]/si",
  21. "/\[code\](.+?)\[&#47;code\]/si",
  22. "/  /",
  23. "/\[#(.[a-zA-Z0-9_\- ]*?)\](.+?)\[&#47;#(.[a-zA-Z0-9_\- ]*?)\]/si",
  24. "/( |\r\n|\n|\r|:|;|\])(http|https|ftp|mms|ed2k):&#47;&#47;([^ !\'\"\r\n]+)/i",
  25. "/( |\r\n|\n|\r|:|\(|\)|\])www\.([^ !\'\"()\r\n]+)/i",
  26. "/( |\r\n|\n|\r|:|;|\])([^ !\'\"()\r\n;:]+)(@)([^ !\'\"()\r\n;]+)(\.)([^ !\'\"()\r\n;]+)/i",
  27. "/(\r\n)/",
  28. "/\[#(.[a-zA-Z0-9_\- ]*?)#\]/si"
  29. );
  30. $replace = array(
  31. "<img src=\"\\1://\\2\" alt=\"\\1://\\2\" title=\"\\1://\\2\" />",
  32. "<div align=\"center\">\\1</div>",
  33. "<div align=\"left\">\\1</div>",
  34. "<div align=\"right\">\\1</div>",
  35. "<div align=\"justify\">\\1</div>",
  36. "<span class=\"taille1\">\\1</span>",
  37. "<span class=\"taille2\">\\1</span>",
  38. "<span class=\"taille3\">\\1</span>",
  39. "<fieldset class=\"spoiler\"> <legend class=\"texteentete taille1 entete all_border\" style=\"padding: 2px;\"> <b>Sélectionner le cadre pour voir le texte : </b> </legend> \\1</fieldset>",
  40. "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\"><img src=\"images/panneau/h.gif\" alt=\"\"></td></tr><tr><td align=\"center\" class=\"pano\"><span class=\"taille1\" style=\"color:#000000;\">\\1</span></td></tr><tr><td align=\"center\"><img src=\"images/panneau/b.gif\" alt=\"\" title=\"[pano]texte[/pano]\"></td></tr></table>",
  41. "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\"><img src=\"images/panneau/h.gif\" alt=\"\"></td></tr><tr><td align=\"center\" style=\"background-image:url('images/panneau/m.gif');background-position:center;background-repeat:repeat-y;\">\\1</td></tr><tr><td align=\"center\"><img src=\"images/panneau/b.gif\" alt=\"\" title=\"[smilie]smiley[/smilie]\"></td></tr></table>",
  42. "<b>\\1</b>",
  43. "<i>\\1</i>",
  44. "<u>\\1</u>",
  45. "<strike>\\1</strike>",
  46. "<li>\\1</li>",
  47. "<a href=\"\\1://\\2\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\3</a>",
  48. "<a href=\"http://\\1\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\2</a>",
  49. "<a href=\"\\1\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\1</a>",
  50. "<fieldset class=\"all_border\" style=\"background-color: #fff;><pre style=\"font-family: Courier; font-size:10pt;\">\\1</pre></fieldset>",
  51. " &nbsp;",
  52. "<span style=\"color:\\1;\">\\2</span>",
  53. "\\1<a href=\"\\2://\\3\" target=\"_blank\" class=\"textesujet \" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\2://\\3</a>",
  54. "\\1<a href=\"http://www.\\2\" target=\"_blank\" class=\"textesujet \" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">www.\\2</a>",
  55. "\\1<a href=\"mailto:\\2@\\4\\5\\6\" target=\"_blank\" class=\"textesujet\" title=\"Envoyer un mail à cette adresse\">\\2@\\4\\5\\6</a>",
  56. "<br />",
  57. " <img src=\"images/smileys/perso/" . $config . "_\\1.gif\" alt=\"\" title=\"[#\\1#]\" />"
  58. );

...


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°828031
simogeo
j'ai jamais tué de chats, ...
Posté le 20-08-2004 à 19:53:16  profilanswer
 


 
tu commences a me saouler toi [:itm]. T'essaies de me prouver quoi exactement ? Que tu sais te servir des regexs?  Qu'il  est possible de transformer un saut de ligne en br a coups de regex? [:noxauror]
 
 
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°828045
MrFredG
Posté le 20-08-2004 à 20:40:03  profilanswer
 

Non il te dit que dans ce cas precis un preg_replace sur array() unique est plus rapide que de coupler un preg_replace sur array() + 1 nl2br()
C'est dingue d'être insultant comme ca quand on a tord.

n°828052
drasche
Posté le 20-08-2004 à 20:54:06  profilanswer
 

Ce qui est dingue, c'est de voir des gens réfuter la logique pure qu'un simple nl2br est plus rapide qu'un preg_replace.
 
Je viens de faire le test sur une page de mon site: le couple preg_replace+nl2br est plus rapide que le preg_replace tout seul (j'ai repris le bout de code de Gilbert pour faire ce test).
 
Pour moi ce résultat est parfaitement logique.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°828069
MrFredG
Posté le 20-08-2004 à 21:06:05  profilanswer
 

ok au temms pour moi ca ne me semblait pas si évident que ca dans ce cas de figure la.

n°828073
drasche
Posté le 20-08-2004 à 21:07:33  profilanswer
 

Bin si: nl2br est une fonction dédiée à une seule tâche, t'as même pas à spécifier de paramètre, alors que preg_replace est beaucoup plus générique. Logiquement, nl2br va faire son boulot plus vite [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°828077
simogeo
j'ai jamais tué de chats, ...
Posté le 20-08-2004 à 21:10:18  profilanswer
 

MrFredG a écrit :

ok au temms pour moi ca ne me semblait pas si évident que ca dans ce cas de figure la.


 
renseignes toi sur le fonctionnement d'un moteur de regex.
 
et cesse d'être insultant comme ca quand tu as tort. [:aloy]


Message édité par simogeo le 20-08-2004 à 21:10:35

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°828100
MrFredG
Posté le 20-08-2004 à 21:32:12  profilanswer
 

Ma remarque était torDue ;)

n°828135
meerthyl
Posté le 20-08-2004 à 22:15:46  profilanswer
 

Oui mais le torTue.
 
[plus là]

n°828139
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 20-08-2004 à 22:19:09  profilanswer
 

simogeo a écrit :

tu commences a me saouler toi [:itm]. T'essaies de me prouver quoi exactement ? Que tu sais te servir des regexs?  Qu'il  est possible de transformer un saut de ligne en br a coups de regex? [:noxauror]

Simplement qu'il est tout a fait malin de profiter des array de transformation de bbcodes pour s'oiccuper en même temps des retours chariot et/ou de ligne. Ca ne va pas plus loin.


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°828143
drasche
Posté le 20-08-2004 à 22:22:32  profilanswer
 

je sens qu'on part dans un grand débat :D
 
perso je vais pas utiliser un canon pour tuer une mouche :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°828157
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 20-08-2004 à 22:42:08  profilanswer
 

Ceci est intéressant : http://fr.php.net/manual/fr/function.nl2br.php
 
Particulièrement ce passage :

Citation :

CK1 at wwwtech dot de
03-Feb-2001 02:07
Hi,
 
in answer to eightraks@linux-foo.com:
 
I think, this should work better:
 
$txt = preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$txt);
 
It should work on windows with unix style newlines and mac style newlines, it should work on unix with windows style newlines and mac style newlines and it should work mac with windows style newlines and unix style newlines.
 
Windows style newlines are like this:
<CR><LF> -> \r\n -> \015\012
 
Mac style like this:
<CR> -> \r -> \015
 
Unix style like this:
<LF> -> \n -> \012
 
\012 -> 10 -> \n
\015 -> 13 -> \r
 
You shouldn't use \n or \r for replacing, because \n for windows is on unix enviroments \r\n and on mac enviroments \r - so you won't match newlines of foreign systems.
 
greets,
 CK1

Or, quand je lis l'explicatif de la fonction, je vois que la fonction nl2br() ne s'occupe que des \n et zappe (apparement) les \r ...
 
Edit : je vais quand même tester (pas sur de moi la ...)
 
Edit bis > ah ben non j'avais tord : la fonction parse bien les deux trucs.


Message édité par Gilbert Gosseyn le 20-08-2004 à 22:47:10

---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] BBCode vers html problème avec <br>

 

Sujets relatifs
PHP recuperer les dimensions d'un tableau en HTML[PHP] erreur que je ne comprend pas
SQL fonction conversion vers date [CSS] Probleme IE, bizarre (ou désespérant, au choix)
[Web/PHP/XML] Inserer un flux XML dans une page PHPCGI dans une page html
probleme avec un formulaireproblème de boîte/cadre/float
[HELP]Comment faire pour acceder en php a une zone texte input... 
Plus de sujets relatifs à : [PHP] BBCode vers html problème avec <br>


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR