bonjour, je voudrais faire passé les emoji dans mon forum j'utilise du markdown avec Parsedown et une couche htmlpurifier (j'apprend encore la poo mes fonction son peut être mal fichu)

    public function SetPurify(){

        require_once ('..'.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.'htmlpurifier'.DIRECTORY_SEPARATOR.'library'.DIRECTORY_SEPARATOR.'HTMLPurifier.auto.php');

        $purifierConfig = \HTMLPurifier_Config::createDefault();
        $purifierConfig->set('Core.Encoding', 'UTF-8');
        $purifierConfig->set('HTML.Allowed', 'p, a[href|title], blockquote[cite],span[style|class], table[style], thead, tr, th[style], td[style], tbody, pre, code[class|style], hr, em, strong, ul, li, img[src|alt|class], br, ol, del, h1, h2, h3, h4, h5, h6');
        $Purifier = new \HTMLPurifier($purifierConfig);

        return $Purifier;
    }

   public function SetParse(){

        $parsedown = new \Parsedown();
        $parsedown->setSafeMode(true);

        return $parsedown;
    }

    public function Rendertext($content){
        $content = $this->SetParse()->text($content);
        $this->SetPurify($content);
        return $content;
    }

ici j'ai fait ça dans une class Parsing le truc c'est que j'ai essayé les émojis de Windows touche win+v et je vois que je n'ai rien à faire il s'affiche correctement je n'ai même pas importé de library Javascript ni parsé quoique ce soi, et je vois que les émois sont aussi interprétés dans la bdd j'ai juste passé en utf8_mb4_general_ci sinon j'avais une erreur dans l'insersion... donc la question est, est-ce que c'est utilisable telle quelle ou ça représente un risque ?

je me dit que si ça fontionne comme ça pourquoi faire compliquer, et d'ailleur ai-je vraiment besoin de htmlpurifier si je fais du markdown ?

je précise que je suis tombé sur win+v par hazar et j'ai testé.

bonne soirée.

3 réponses


popotte
Réponse acceptée

Alors le changement c'est une bonne chose, d'ailleur emoji ou pas tu devrais toujours encoder ta base en utf8mb4 pour garantir la compatibilité de tous les OS ^^

Alors nope aucun problème à stocker directement des emoji, concrètement la base de données stocke un code emoji genre U+1F600, c'est l'encodage qui fait que tu vois directement l'émoji mais coté base c'est juste du texte ;)

Hello :)

Alors tu peux encoder ta base de données pas de soucis, en plus c'est recommandé d'encoder la base en UTF-8, c'est l'encodage qui est compatible avec tous les OS (Win, Mac, toutes les distros Linux...) ;)

Après si tu as déjà des données encodé différement dans cette base de données, faudra tester pour voir si ça casse pas le texte, si le texte s'affiche bien (regardes surtout les caractères avec accents, c'est souvent eux qui cassent, les "é", les "à", les "è"...) tant mieux, si c'est cassé alors faudra que tu exportes ta base, tu l'encodes en UTF-8 et tu la réimportes, ou encore mieux si dans ton client MySQL tu as un outil pour réencoder la base comme il faut utilises l'outil :p

Mais je suppose que tu avais l'encodage par défaut (latin machin) je crois que c'est compatible avec UTF-8 devrait pas y avoir de casse ^^'

neecride
Auteur

Bonjour,

Alors de base j'étais en latin_genaral_ci mais j'ai du passé en utf8mb4_general_ci justement parce que j'avais une erreur quand je mettais directment un emoji venant de windows pour une question d'octet.

tu peut voir sur image dropbox que les emoji sont directement interprété dans la base de donnée et afficher directement sur le forum sans passé par un parsing, et c'est en cela que je voudrais savoir si c'est un problème d'afficher ou stocké les emoji directement.

bonne journée.