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
WordPress Problème sitemap site multilingue Crawl et indexation Google, sitemaps Lundi à 12:29
Problème site:pronostics-courses.com Administration d'un site Web 19 Juillet 2021
Problème récent de Crawl Google Crawl et indexation Google, sitemaps 7 Juillet 2021
Search Console Problème d'indexer d'une page sur Google Référencement Google 20 Juin 2021
Search Console Problème de version de langue dans les résultats de recherche Google Référencement international (langues, pays) 17 Juin 2021
Problème suivi Analytics avec AMP Débuter en référencement 12 Juin 2021
Problème suivi GTM : url lancées, cookies absents. Développement d'un site Web ou d'une appli mobile 29 Mai 2021
Problème avec Sirdata... Administration d'un site Web 25 Mai 2021
Search Console Problème d'indexation : Détectée, actuellement non indexée Référencement Google 16 Mai 2021
Problème trafic temps réel Google Analytics Google Analytics 14 Avril 2021