Page 1 sur 1

Supprimer les smileys/symboles utf8

Posté : 23 mai 2021, 10:00
par hikaru59
Bonjour,
J'aimerais savoir s'il y a un moyen de supprimer les smileys ou symboles utf8 (✔️❤️ par exemple) durant l'envoi d'un message.
Je n'ai jamais trouvé.

J'ai pensé au Regex, mais ça ne marche pas :

Code : Tout sélectionner

$message = 'Certains signes !?.,:;°%&$€£§²=+-/\*#<>(){}[]~❤️✔️ sont supprimés ou remplacés, pas les accents àçéè ! '; $regex = '`[^0-9a-z\s\néèàç!*?.,:;°%&$€£§²/#<>(){}~+-]`i'; // ^ pour dire de ne pas chercher de caractères 0-9, a-z, espace, saut de ligne et les signes éèàç!*?.,:;°%&$€£§²/#<>(){}~+- $message = preg_replace($regex, '', $message); // On remplace les caractères interdits par rien pour les supprimer. J'obtiens : Certains signes *!?.,:;°%&$€£§²+-/#<>(){}~�� sont supprimés ou remplacés, pas les accents àçéè !
J'obtiens des caractères bizarres ��

Re: Supprimer les smileys/symboles utf8

Posté : 23 mai 2021, 12:21
par Ryle
Salutations !

Je n'ai pas testé, mais à priori l'option "u" (minuscule) dans la regex te permettrait de gérer les chaines utf8 et obtenir le résultat souhaité :)

https://www.php.net/manual/fr/reference ... ifiers.php

Re: Supprimer les smileys/symboles utf8

Posté : 23 mai 2021, 13:04
par hikaru59
Merci,
Cela marche.

J'ai aussi trouvé un moyen de supprimer directement ces smileys au lieu de faire la liste des signes autorisés :

Code : Tout sélectionner

$text = 'Certains signes *!?.,:;°%&$€£§²=+-/\#<>(){}[]~_| ✔️❤️ sont supprimés ou remplacés, pas les accents àçéèÀ ! '; $regex = '`[\x{2700}-\x{27BF}]`u'; $clean_text = preg_replace($regex, '', $text); echo $clean_text;
Mais je n'arrive pas à comprendre ceci: \x{ }

Re: Supprimer les smileys/symboles utf8

Posté : 23 mai 2021, 18:01
par Ryle
Pour désigner un caractère spécifique en unicode on utilise habituellement la syntaxe \uFFFF où FFFF correspond au code hexadécimal du caractère que tu veux utiliser. Certains moteurs de regex ne reconnaissent cependant pas toujours cette syntaxe et il faut dans ce cas utiliser la forme \x{FFFF} à la place. Comme \x n'est pas une classe valide, \x{1234} n'est jamais considéré comme le caractère \x 1234 fois, mais bien comme son équivalent unicode U+1234.

Dans les regex PCRE il semble également être possible d'utiliser des catégories de caractères propres à l'unicode. Tu devrais ainsi pouvoir utiliser \p{S} pour désigner les symboles (à tester)

Re: Supprimer les smileys/symboles utf8

Posté : 23 mai 2021, 22:34
par hikaru59
Merci pour ces explications. Je vois qu'il y a beaucoup de choses qui ne sont pas dans les cours.

\p{S} supprime bien tous les smileys, mais aussi certains caractères utiles : $€£°<>|