Supprimer les smileys/symboles utf8

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Supprimer les smileys/symboles utf8

Re: Supprimer les smileys/symboles utf8

par hikaru59 » 23 mai 2021, 22:34

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 : $€£°<>|

Re: Supprimer les smileys/symboles utf8

par Ryle » 23 mai 2021, 18:01

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

par hikaru59 » 23 mai 2021, 13:04

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

par Ryle » 23 mai 2021, 12:21

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

Supprimer les smileys/symboles utf8

par hikaru59 » 23 mai 2021, 10:00

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 ��