Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 04/07/2007, 14h45   #1
Futur Membre du Club
 
Inscription : mars 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 98
Points : 17
Points : 17
Par défaut Ou positionner la fonction dans un formulaire pour interpréter le BBCode?

Bonjour tout le monde!

Je suis en train de créer un forum et je voudrais utiliser le BBCode!

Pour cela, j'ai créé toutes mes fonctions pour avec le [.b][/.b]

Mais maintenant que dans ma texte area j'ai les balises en BBCode, je voudrais savoir comment et ou je peux faire interpréter le BBcode à l'envoie???

J'ai trouvé une fonction pour cela, mais je ne sais pas ou la mettre pour qu'elle remplace le texte area...

J'aurais penser dans la methode post, faire un onsubmit ou je ne sais quoi, mais je ne suis pas sur!

Besoin d'aide, merci d'avance


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function bbCode($t)
// remplace les balises BBCode par des balises HTML
{
   // barre horizontale
   $t=str_replace("[/]", "<hr width=\"100%\" size=\"1\" />", $t);
   $t=str_replace("[hr]", "<hr width=\"100%\" size=\"1\" />", $t);
 
   // gras
   $t=str_replace("[b]", "<strong>", $t);
   $t=str_replace("[/b]", "</strong>", $t);
 
   // italique
   $t=str_replace("[i]", "<em>", $t);
   $t=str_replace("[/i]", "</em>", $t);
 
   // soulignement
   $t=str_replace("[u]", "<u>", $t);
   $t=str_replace("[/u]", "</u>", $t);
 
   // alignement centré
   $t=str_replace("[center]", "<div style=\"text-align: center\">", $t);
   $t=str_replace("[/center]", "</div>", $t);
 
   // alignement à droite
   $t=str_replace("[right]", "<div style=\"text-align: right\">", $t);
   $t=str_replace("[/right]", "</div>", $t);
 
   // alignement justifié
   $t=str_replace("[justify]", "<div style=\"text-align: justify\">", $t);
   $t=str_replace("[/justify]", "</div>", $t);
 
   // couleur
   $t=str_replace("[/color]", "</span>", $t);
   $regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]";
   $t=ereg_replace($regCouleur, "<span style=\"color: \\1\">", $t);
 
   // taille des caractères
   $t=str_replace("[/size]", "</span>", $t);
   $regCouleur="\[size= ?([[:digit:]]+) ?\]";
   $t=ereg_replace($regCouleur, "<span style=\"font-size: \\1px\">", $t);
 
   // lien
   $regLienSimple="\[url\] ?([^\[]*) ?\[/url\]";
   $regLienEtendu="\[url ?=([^\[]*) ?] ?([^]]*) ?\[/url\]";
   if (ereg($regLienSimple, $t)) $t=ereg_replace($regLienSimple, "<a href=\"\\1\">\\1</a>", $t);
   else $t=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\">\\2</a>", $t);
 
   // mail
   $regMailSimple="\[email\] ?([^\[]*) ?\[/email\]";
   $regMailEtendu="\[email ?=([^\[]*) ?] ?([^]]*) ?\[/email\]";
   if (ereg($regMailSimple, $t)) $t=ereg_replace($regMailSimple, "<a href=\"mailto:\\1\">\\1</a>", $t);
   else $t=ereg_replace($regMailEtendu, "<a href=\"mailto:\\1\">\\2</a>", $t);
 
   // image
   $regImage="\[img\] ?([^\[]*) ?\[/img\]";
   $regImageAlternatif="\[img ?= ?([^\[]*) ?\]";
   if (ereg($regImage, $t)) $t=ereg_replace($regImage, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
   else $t=ereg_replace($regImageAlternatif, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
 
   return $t;
}
neo62matrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 18h49   #2
Rédacteur/Modérateur
 
Avatar de Deepin
 
Homme Deepin
Ingénieur - Chef de projet Modélisation/Simulation
Inscription : avril 2004
Messages : 1 341
Détails du profil
Informations personnelles :
Nom : Homme Deepin
Localisation : Ile Maurice

Informations professionnelles :
Activité : Ingénieur - Chef de projet Modélisation/Simulation
Secteur : Industrie

Informations forums :
Inscription : avril 2004
Messages : 1 341
Points : 7 085
Points : 7 085
Envoyer un message via Skype™ à Deepin
Moi je l aurais mis au niveau ou tu reçoit ta variable post !!!
au debut du fichier que tu definis dans l'attribut action de ton post.
A++
Deepin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 23h40   #3
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Ta fonction n'est pas bonne par ce que elle n'oblige pas que les balises soient fermées, donc ça peut causer des gros gros bugs d'affichage...

Et pour le positionnement, il faut traiter le texte avec cette fonction juste avant de l'afficher. Je vois pas ce que tu veux dire par remplacer le textarea...
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 00h06   #4
Futur Membre du Club
 
Inscription : mars 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 98
Points : 17
Points : 17
Merci de vos réponses!

The Nux aurais tu la même fonction qui force à fermer les balises?

Le truc c'est que j'aimerais utiliser la fonction BBCode dans le code de l''éditeur de texte... Sinon ca me fout la merde dans mes autres pages....

Vous avez une solution? Merci encore!
neo62matrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 00h51   #5
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Question fonction BBCode j'ai rien à te conseiller que j'ai testé personellement, mais les fonctions bbcode c'est pas ça qui manque. Après un tour sur phpclasses.org, cette classe m'a l'air pas mal : http://www.phpclasses.org/browse/package/951.html et celle ci encore mieux : http://www.phpclasses.org/browse/package/1379.html

Et si j'ai bien compris tu veux rajouter des boutons BBCode à l'éditeur de texte ?
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 02h54   #6
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Visiblement, il suffit d'utiliser la fonction comme cela :
Code :
$message = bbcode($_POST['textarea'])
Bien sur, il faut corriger la clef du tableau $_POST pour qu'elle corresponde au champs de saisie du formulaire, et utiliser cela dans la page d'action de ce dernier.
Par contre, il n'y a aucune protection contre le XSS javascript.

Note : comme precise dans le manuel php.net/str_replace, on peut tres facilement utiliser des tableaux comme arguments.
__________________
Q: Dois-je haïr et cogner sur Microsoft ?
R: Non, vous n'êtes pas obligé. Non pas que Microsoft n'est pas écoeurant, mais il y avait une culture hacker bien avant Microsoft et il y en aura une bien après que Microsoft aura été de l'histoire ancienne. Toute énergie dépensée à haïr Microsoft serait mieux employée par vos compétences et votre passion. Écrivez du bon code, cela brisera suffisamment Microsoft sans polluer votre karma.
Comment devenir un hacker ? par Eric Steven Raymond
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 03h13   #7
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Citation:
Envoyé par is_null
Visiblement, il suffit d'utiliser la fonction comme cela :
Code :
$message = bbcode($_POST['textarea'])
Oui mais non ce n'est pas une bonne idée, car ce qui va être entré dans la base de donnée c'est du bbcode transformé, ce qui veut dire que si on veut rajouter une fonction "éditer" comme celle sur ce forum ben on ne pourra pas donner à l'utilisateur le texte qu'il avait rentré en BBCode. (je sais pas si j'ai été clair...)

Le mieux c'est à l'affichage, grossièrement
Code :
<?php echo bbcode($message); ?>
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 09h40   #8
Futur Membre du Club
 
Inscription : mars 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 98
Points : 17
Points : 17
Citation:
Envoyé par The Nux
Le mieux c'est à l'affichage, grossièrement
Code :
<?php echo bbcode($message); ?>
Euuu le problème c'est que je peux pas appeler du javacript avec en argument du php... Donc, ba je pense que je vais réécrire la fonction bbCode en php!
neo62matrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 13h55   #9
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Citation:
Envoyé par neo62matrix
Euuu le problème c'est que je peux pas appeler du javacript avec en argument du php...
Oui, mais je vois pas pourquoi il faudrai le faire...
Il y a deux choses en fait
  • la fonction PHP qui transforme le BBCode en HTML pour afficher ce que les gens ont écris
  • l'éditeur de BBCode qui ajoute des boutons autour du textarea. Lui il est codé en javascript et est totalement indépendant de la fonction PHP (si ce n'est que tu dois avoir mis les boutons pour générer des balises que ta fonction va pouvoir décoder...)
Je crois qu'on a trouvé la fonction PHP, donc maintenant il ne te reste plus qu'à faire un peu de javascript pour rajouter les boutons (c'est pas bien méchant à faire... tu peux par exemple aller voir comment c'est fait dans des éditeurs déjà existants et puis utiliser le même principe)
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 16h41   #10
Futur Membre du Club
 
Inscription : mars 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 98
Points : 17
Points : 17
lol! En fait on s'était mal compris! J'avais déja fait tout ce qui est bouton, et etc.. Je voulais juste utiliser du code pour "convertir" le BBcode en Php!

Mais le truc, c'est que j'étais persuadé qu'il fallait que j'utilise du JS pour cette fonction de conversion..... Je sais, ne rigolez pas....

Merci pour tout!
neo62matrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 02h54   #11
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Citation:
Envoyé par neo62matrix
lol! En fait on s'était mal compris! J'avais déja fait tout ce qui est bouton, et etc.. Je voulais juste utiliser du code pour "convertir" le BBcode en Php!

Mais le truc, c'est que j'étais persuadé qu'il fallait que j'utilise du JS pour cette fonction de conversion..... Je sais, ne rigolez pas....

Merci pour tout!
Du BBCode en PHP ? Tu veux dire du BBCode en HTML ? Si c'est ça c'est bien ce dont je parle depuis le début. Si la seule chose à faire est de convertir du BBCode en HTML alors ce qui rentre en argument de la fonction est du BBCode, et ce qui en sort est du HTML. Ensuite il ne te reste plus qu'à placer ce HTML dans une page.
Par exemple, tu as une table avec les commantaires d'un message dans ta base de données, et les commentaires sont mis en forme par du BBCode. Mettons que le commentaire soit dans la variable $commentaire, alors tout ce que tu as à faire pour afficher ce commentaire formaté en HTML c'est

Code :
<?php echo bbcode($commentaire); ?>
Vois-tu ce que je veux dire ?
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h02.


 
 
 
 
Partenaires

Hébergement Web