IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ou positionner la fonction dans un formulaire pour interpréter le BBCode? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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("&#91;b&#93;", "<strong>", $t);
       $t=str_replace("&#91;/b&#93;", "</strong>", $t);
     
       // italique
       $t=str_replace("&#91;i&#93;", "<em>", $t);
       $t=str_replace("&#91;/i&#93;", "</em>", $t);
     
       // soulignement
       $t=str_replace("&#91;u&#93;", "<u>", $t);
       $t=str_replace("&#91;/u&#93;", "</u>", $t);
     
       // alignement centré
       $t=str_replace("<div style="text-align: center;">", "<div style=\"text-align: center\">", $t);
       $t=str_replace("</div>", "</div>", $t);
     
       // alignement à droite
       $t=str_replace("<div style="text-align: right;">", "<div style=\"text-align: right\">", $t);
       $t=str_replace("</div>", "</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;
    }

  2. #2
    Expert éminent sénior

    Avatar de Deepin
    Homme Profil pro
    Ingénieur - Chef de projet Modélisation/Simulation
    Inscrit en
    Avril 2004
    Messages
    3 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 164
    Points : 51 095
    Points
    51 095
    Par défaut
    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++

  3. #3
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    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...
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut
    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!

  5. #5
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    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 ?
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  6. #6
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Visiblement, il suffit d'utiliser la fonction comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.
    YourLabs Business Service: Conseil en Strategie Numerique / Club de 1337 Haxors depuis 2012 / Marque de Logiciels Libres / Blog / GitHub /
    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

  7. #7
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par is_null
    Visiblement, il suffit d'utiliser la fonction comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo bbcode($message); ?>
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par The Nux
    Le mieux c'est à l'affichage, grossièrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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!

  9. #9
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    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)
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut
    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!

  11. #11
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo bbcode($commentaire); ?>
    Vois-tu ce que je veux dire ?
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/12/2007, 08h58
  2. Fonction dans sous formulaire
    Par Junior_jef dans le forum IHM
    Réponses: 18
    Dernier message: 25/06/2007, 15h17
  3. Réponses: 5
    Dernier message: 07/09/2006, 13h33
  4. Positionner des éléments dans un formulaire
    Par Choupinou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/07/2006, 17h36
  5. saisir une fonction dans un formulaire
    Par arnogef dans le forum IHM
    Réponses: 14
    Dernier message: 12/12/2005, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo