|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
Bonsoir,
Sur mon CMS, je veux donner la possibilité d'utiliser un BBCode pour éditer les pages, en utilisant une balise [html][/html] pour inclure du code HTML. J'utilise la fonction nl2br pour remplacer les sauts de ligne par <br /> mais je voudrais que ça ne s'applique pas à l'intérieur des sections [html]. Comment faire ? |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je te suggèrerais d'utiliser un preg_replace_callback, avec une regex détectant ce qui n'est pas inclus entre <html> et </html>, et une fonction de callback encapsulant nl2br.
|
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
J'ai l'expression suivante, qui sélectionne le texte entre [html] et [/html] : '/\[html\](.+?)\[\/html\]/s'. Comment modifier cette expression pour exclure le texte à l'intérieur de cette balise ?
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Par exemple, avec ça, $1 et $3 contiennent le texte hors [html] :
Code :
'/(.*?)\[html\](.+?)\[\/html\](.*?)/s'
|
|
|
00
|
|
|
#5 | |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
pourquoi ? tu peux appliquer ton callback à $1 et $3.
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
En fait, ça ne fonctionne pas tout à fait : La fonction n'est pas appliquée si le texte ne contient pas de balises [html][/html].
|
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Fais une exception pour ce cas-là, qui est facile à tester.
|
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
Ca fonctionne très bien. Merci.
Il me reste encore un problème avec ma syntaxe pour les listes. nl2br() va me donner : J'ai essayé de supprimer les sauts de lignes avant d'appliquer nl2br() : Code php :
|
||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
\n et \r ne sont pas interprétés dans les chaines délimitées par des quotes (') mais uniquement dans les chaines délimitées par des guillemets (")
Une remarque sinon sur ton script : En principe l'utilisation de bbcode est utilisée pour permettre une mise en forme en évitant que l'utilisateur puisse modifier fondamentalement le contenu d'une page html. Si tu autorise de l'html, ton bbcode ne te sert quasiement plus a rien, autant autoriser l'html directement sans balises. Petits trucs marrant a tester sur ton site : Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#12 | |
|
Membre confirmé
![]() ![]() Inscription : mai 2002 Messages : 543 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com