probleme BBCode [html] html_entity_decode

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par legarspol, 28 Juin 2009.

  1. legarspol
    legarspol Nouveau WRInaute
    Inscrit:
    21 Décembre 2006
    Messages:
    20
    J'aime reçus:
    0
    Je voulait pouvoir proposer au rédacteur d'un article d'insérer du HTMl lorsqu'ils veulent par exemple insérer une vidéo ou autre embed.
    Voici comment je procède:
    l'auteur écrit un message qui est sécurisé par htmlspecialchars et nl2br et stocké dans la base mysql.
    quand on lit le message j'utilise une fonction maison qui transforme tout les BBcode
    cependant je ne parvient pas a remplacer le contenu de
    HTML:
    
    
    par son équivalent html:
    voici ma ligne de code:
    Code:
    $texte = preg_replace('#\[html\](.+)\[/html\]#isU','html_entity_decode($1)', $texte);
    
    J'ai essayer plusieurs truc mais rien a faire il veut pas me le remplacer.
    avez vous une idée pour le faire ?
    une fonction a utiliser ?
    ou dois je après validation du formulaire de rédaction de l'article proposer à l'utilisateur de rentrer du HTML ?
     
  2. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    588
    J'aime reçus:
    0
    Tu as regardé un peu comment font les scripts reconnus pour leur BBcode ? Je pense à phpBB notamment mais je crois que Wordpress ou Dotclear l'utilisent aussi ;)
     
  3. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 626
    J'aime reçus:
    0
    Je l'ignore pour dotclear. Mais wordpress n'a pas de bbcode integré ;)

    Après lorsqu'il faut y passer une fonction, je trouve que preg_replace rends le code rapidement illisible.
    Ce n'est donc que mon avis personnel. Mais je te conseillerais d'utiliser preg_replace_callback.

    Code:
    function html_code($match) {
    return html_entity_decode($match);
    }
    
    $str = preg_replace_callback('#\[html\](.+)\[/html\]#isU', 'html_code', $str);
     
  4. legarspol
    legarspol Nouveau WRInaute
    Inscrit:
    21 Décembre 2006
    Messages:
    20
    J'aime reçus:
    0
    Merci sa marche !
    alors pour ceux qui feront une recherche pour faire la meme chose que moi
    voici le code sur lequel il tomberont:
    Code:
    Warning: html_entity_decode() expects parameter 1 to be string, array given in /mnt/119/free.fr/4/1/legarspol/legarspol/fonction.php on line 202
    il suffit de remplacer
    Code:
    return html_entity_decode($match);
    par
    Code:
    return html_entity_decode($match[1]);
    ou un autre chiffre (sa remplace $1)
    voila j'espère que sa servira à qqn d'autre
    merci beaucoup car j'ai deja du fouiller dans le code de phpbb . j'ai passé 3 jour à chercher j'usqua renoncer... alors tout ces trucs la... :lol:
    sinon sa fait peur !
    j'aurais jamais remarquer que html_code etait une fonction avant !
    et sinon j'ai pas très bien compris quel est la différence avec preg_replace tout court...
    mais sa marche c'est le principale.
    Merci !
     
  5. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 626
    J'aime reçus:
    0
    La différence entre preg_replace et preg_replace_callback est que le premier prends une chaine de caractères pour faire le remplacement, lorsque la seconde fait appel à une fonction (ici html_code).
    Tu peut ainsi plus aisément faire des choses complexes dans tes remplacements.
     
  6. legarspol
    legarspol Nouveau WRInaute
    Inscrit:
    21 Décembre 2006
    Messages:
    20
    J'aime reçus:
    0
    Merci beaucoup pour ton aide !
    et pour prelever une chaine de caractère d'une autre chaine de caractère j'utilise cet meme fonction ? qui fait appel à une autre fonction qui enregistre la chaine voulue ?
     
  7. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 626
    J'aime reçus:
    0
    Si tout ce que tu veut faire, c'est récupérer une chaine, en faisant un preg_match, cela suffit clairement.
    Bien que plus lisible, utiliser les callbacks utilise tout de même un tout petit peu plus de processus système.
     
Chargement...
Similar Threads - probleme BBCode [html] Forum Date
Problème migration site vistaprint vers wordpress.com Débuter en référencement Vendredi à 15:14
Problème e-commerce sur GA/GTM Google Analytics 18 Juin 2020
Problème de pages exclues Crawl et indexation Google, sitemaps 10 Juin 2020
Site E-Commerce : Problème Page De Collection Problèmes de référencement spécifiques à vos sites 5 Juin 2020
Problème de coupure en hebergement mutualisé Demandes d'avis et de conseils sur vos sites 30 Mai 2020
Problème htaccess Développement d'un site Web ou d'une appli mobile 26 Mai 2020
Search Console Problème indexation très faible Crawl et indexation Google, sitemaps 19 Mai 2020
Problème de preg_match(). Développement d'un site Web ou d'une appli mobile 15 Mai 2020
ovh probleme redirection multiples Problèmes de référencement spécifiques à vos sites 1 Mai 2020
Problème OVH et Problèmes de WHOIS Demandes d'avis et de conseils sur vos sites 30 Avril 2020
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice