|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : avril 2006 Messages : 38 ![]() |
Bonjour,
Je pense que beaucoup d'entre vous connaissent la fonction nl2br, qui permet d'insérer la balise '<br />' devant toutes les nouvelles lignes. Beaucoup de personnes recommandent d'utiliser cette fonction uniquement à l'affichage. Et d'ailleurs, cela parait tout à fait logique, et cela explique également pourquoi il n'existe pas de fonction br2nl. Cependant, je me trouve face à une impasse : imaginez un formulaire bbcode, dans un panel d'administration, permettant d'insérer du html (je ne parle pas d'une coloration syntaxique, mais bel et bien de html : les balises sont interprétées). Voici un exemple : Par exemple, nous entrons ceci dans le formulaire : Citation:
Citation:
Même si je reconnais que la question n'est pas de la plus haute importance, votre point de vue m'intéresse. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Avant de répondre de manière plus complète, peux-tu me dire où tu utilises le BBCode que tu évoques ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
je verrais plutot htmlentities() et html_entity_decode() non ??
et puis si tu tapes des balises html, tu les stockes avec htmlentities comme ca elle ne sont pas executable, et après tu les décode pour l'affichage avec [HTML] [/HTML] non ?? ou j'ai pas pigé le probleme ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : avril 2006 Messages : 38 ![]() |
Le bbcode est utilisé dans un formulaire du panel d'administration, pour modifier des articles. Les articles sont visualisés par tous les visiteurs.
Concernant htmlentities, cette fonction est utilisé, mais uniquement sur le texte hors des balises [HTML]. Mais le problème est exactement le même qu'avec nl2br : il est plus logique de l'utiliser lors de l'affichage, mais plus performant de le faire lors de l'enregistrement. Enfin, le fond de ma question, c'est essentiellement la logique de programmation. Pour des raisons de performance, j'aurais tendance à parser lors de l'enregistrement, et stoquer la valeur parsée dans la base de données, prete à être affichée. Seulement, la logique voudrait que l'on parse uniquement à l'affichage. |
|
|
00
|
|
|
#5 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Okay, maintenant j'ai saisi le fond du problème ^^
Ne t'en fais pas pour les performances, va. Dans mon URL Rewriting, je parse la page HTML complète pour chercher les URLs, faire plusieurs dizaines de requêtes sur la BDD et effectuer autant (voire davantage) de remplacements. Je mélange des regex, des str_replace et j'en passe. Pourtant, le temps d'exécution total de la fonction d'URLR est ridicule. Mon conseil : ne jamais coder en pensant "performances" mais, à l'inverse, toujours avec un objectif de relecture ultérieure. Les petites optimisations comme celle dont tu parles sont vraiment ridicules et elles peuvent te faire perdre un temps monstrueux un jour ou l'autre, puisque ce n'est pas très correct. Enregistre toujours des données brutes (atomiques) dans la BDD. Laisse tous les traitements au langage de script.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Je suis totalement d'accord avec Yogui, la base de données devrait toujours contenir le texte tel qu'il a été saisi, et non tel qu'il devra etre affiché.
Si apres tu as des soucis de performances... et bien, rien ne t'empeche de mettre en place un systeme de cache, et cela independamment de la provenance des données (base de données ou autre) afin d'ameliorer les perfs. |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : avril 2006 Messages : 38 ![]() |
Donc vous privilégiez la logique aux performances.
Autrement dit, je ne change pas mes petites habitudes, et j'enregistre tel quel dans la base de données. Concernant le système de cache, c'est une solution. Cependant, dans d'autres systèmes (un forum par exemple, avec des centaines de milliers de message), c'est très difficile, voire impossible à mettre en place. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com