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 :

equivalent phpbb [html][/html]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut equivalent phpbb [html][/html]
    Bonjour à tous.
    Je suis en train de réaliser un système permettant la mise en forme de texte (dans un textarea) avec des balises style phpBB. Pour assurer un peu de sécurité, le texte qui est affiché après est passé à travers la fonction htmlentities(). Mais il faudrait que pour les admins il y ait la possibilité de mettre un formatage en HTML. D'où l'interêt de balises [html][/htmlL]

    Pour afficher mon texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo bbcode(htmlentities($_POST["test_field"]));
    (il y a d'autres fonctions, comme stripslashes, mais ici c'est un exemple).

    Une fois passé dans le htmlentities, les < et > ressortent sous la forme &lt; et &gt;
    Donc dans ma fonction bbcode(), je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = preg_replace('`\&lt\;(.+)\&gt\;`isU', '<$1>', $texte);
    Donc ça, ça marche. Mais je veux que cette modification ne s'effectue qu'entre les balises [html]. Et là, je ne sais pas comment faire, et je n'ai pas trouvé de tutos pouvant m'aider sur cette balise précise.

    Voilà, en gros "HALP !"

    Merci

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    essaies quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $texte = preg_replace('#\[html\](.*)\&lt\;(.+)\&gt\;(.*)\[\/html\]#isU', '$1<$2>$3', $texte);

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    En fait, cela te remplacera qu'une seule occurrence car tu n'as qu'un couple [html][/html]

    Donc voici une bidouille qui marche en attendant que quelqu'un trouves une meilleure solution

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $texte = '&lt;b&gt;texte1&lt;/b&gt;[html]&lt;b&gt;texte2&lt;/b&gt;[/html]';
     
    $debut = '[html]';
    $fin = '[/html]';
     
    $pos_debut = strpos($texte, $debut);
    $pos_fin = strpos($texte, $fin);
    $html = substr($texte, $pos_debut+strlen($debut), $pos_fin-$pos_debut-strlen($debut));
     
    $htmlformat = preg_replace('#(.*)\&lt\;(.+)\&gt\;(.*)#isU', '$1<$2>$3', $html);
     
    $texte = substr($texte, 0, $pos_debut).$htmlformat;

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut
    bon, donc après test, le système marche bien pour la première occurrence, mais le texte tapé après la balise [html], quel qu'il soit, n'est plus affiché.

    J'ai testé cette solution de mon coté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //tant qu'il trouve la balise [html]
    while(strpos($texte, "[html]") != FALSE)
    {
    //recup texte entre le premier couple [html][/html] trouvé
    $fin_string = stristr($texte, "[html]");
    $string = stristr($fin_string, "[/html]", TRUE);
    //dans cette string, remplace balises
    $newstring = preg_replace('`\&lt\;(.+)\&gt\;`isU', '<$1>', $string);
    //maj dans texte d'origine (que partie modif)
    $texte = str_replace($string,$newstring,$texte);
    //efface la première occurrence du couple [html][/html]
    $texte = preg_replace('`\[html\](.+)\[/html\]`isU', '$1', $texte, 1);
    }
    ça m'a obligé à mettre à jour le serveur en php5.3 (pour le stristr(,,TRUE)) mais ça marche pas mal. Seul problème, si il n'y a rien avant la première balise [html], il ne prend pas en compte.
    Donc avant mon while, j'ai rajouté
    Au final ça marche, mais je comprends pas pourquoi

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut
    Alors, le système marche avec mon bidouillage de l'espace ajouté, MAIS il n'y a pas moyen de mettre des vidéos youtube, le code ne marchant pas Question donc : quelqu'un aurait-il une idée de pourquoi ?

Discussions similaires

  1. [VB .NET] Equivalent d'un HTML <table border="0">
    Par Runan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/08/2006, 08h12
  2. [xhtml/css] Equivalent des cadres html
    Par ymoreau dans le forum Mise en page CSS
    Réponses: 13
    Dernier message: 07/07/2006, 03h09
  3. [HTML] HTML Comment imbriquer une page HTML dans une autre page
    Par Gerard du Bouchonnois dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 15/06/2006, 17h11
  4. [HTML] html text
    Par zizou771 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 12/04/2006, 17h40
  5. [HTML] HTML: Superposer du texte sur une image
    Par claralavraie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 09/02/2006, 13h44

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