Regex --> Détecter à la fois "gros con" "gros&nbs;con" ou "gros  con"

Invité
Invité n'ayant pas de compte PHPfrance

04 mars 2009, 21:06

Ok, il semblerait que ceci soit la solution :

Code : Tout sélectionner

(\W|^)con(\W|$)
Le ^ autorise le regex à détecter con s'il se trouve en début de ligne, sans caractère le précédent, le $ fait de même s'il se trouve en fin de ligne sans rien qui le suive.

Bon, je vais essayer de refaire mon filtre de cette manière. Si vous souhaitez aussi, de votre côté, vous amuser à créer la liste d'expression regex parfaite, n'hésitez pas. Il faut dire que je ne suis pas le meilleur spécialiste des gros mots. ;-)

Bizule
Invité n'ayant pas de compte PHPfrance

05 mars 2009, 01:14

Voici mon expression régulière qui pourra servir à d'autres je l'espère. J'aimerais beaucoup que vous me disiez ce que vous en pensez et surtout si vous voyez des améliorations possibles (que ce soit au niveau du code ou du... lexique :oops: ). J'y ai passé pas mal de temps et je pense qu'elle est assez efficace en l'état, même s'il est impossible de tout filtrer, c'est clair.

Vous pouvez la tester et la mettre à l'épreuve ici : http://www.regextester.com/ (il faut regrouper l'expression en un seul bloc) :

Code : Tout sélectionner

$wgSpamRegex = "/". # Ouverture //Noms communs grossiers divers "(\W|^)merde(\W|$)|(\W|^)couille(\W|$)|(\W|^)saloperie(\W|$)|". //Les mêmes au pluriel "(\W|^)merdes(\W|$)|(\W|^)couilles(\W|$)|(\W|^)saloperies(\W|$)|". //Autres mots grossiers "(\W|^)fuck(\W|$)|". //Verbes grossiers et leurs déclinaisons les plus probables "(\W|^)emmerd|". "(\W|^)emerd|". "(\W|^)enmerd|". "(\W|^)chier(\W|$)|(\W|^)chié(\W|$)|(\W|^)chiée(\W|$)|(\W|^)chiant(\W|$)|(\W|^)chiants(\W|$)|(\W|^)chiante(\W|$)|(\W|^)chiantes(\W|$)|". "(\W|^)encul|". "(\W|^)niquer(\W|$)|(\W|^)nique(\W|$)|(\W|^)niques(\W|$)|(\W|^)niqué(\W|$)|(\W|^)niquée(\W|$)|". "(\W|^)nik ta(\W|$)|(\W|^)nike ta(\W|$)|(\W|^)nicke ta(\W|$)|". //Insultes adressées à une personne de sexe féminin "(\W|^)conne(\W|$)|(\W|^)connasse(\W|$)|(\W|^)conasse(\W|$)|(\W|^)salope(\W|$)|(\W|^)saloppe(\W|$)|(\W|^)pétasse(\W|$)|(\W|^)petasse(\W|$)|(\W|^)pute(\W|$)|(\W|^)putte(\W|$)|(\W|^)putain(\W|$)|(\W|^)poufiasse(\W|$)|(\W|^)pouffiasse(\W|$)|(\W|^)chieuse(\W|$)|(\W|^)chiarde(\W|$)|(\W|^)grognasse(\W|$)|". //Les mêmes au pluriel "(\W|^)connes(\W|$)|(\W|^)connasses(\W|$)|(\W|^)conasses(\W|$)|(\W|^)salopes(\W|$)|(\W|^)saloppes(\W|$)|(\W|^)pétasses(\W|$)|(\W|^)petasses(\W|$)|(\W|^)putes(\W|$)|(\W|^)puttes(\W|$)|(\W|^)putains(\W|$)|(\W|^)poufiasses(\W|$)|(\W|^)pouffiasses(\W|$)|(\W|^)chieuses(\W|$)|(\W|^)chiardes(\W|$)|(\W|^)grognasses(\W|$)|". //Insultes adressées à une personne de sexe masculin "(\W|^)connard(\W|$)|(\W|^)conard(\W|$)|(\W|^)salaud(\W|$)|(\W|^)chieur(\W|$)|(\W|^)chiard(\W|$)|(\W|^)merdeux(\W|$)|(\W|^)pédé(\W|$)|(\W|^)tarlouze(\W|$)|(\W|^)trou du cul(\W|$)|(\W|^)trou-du-cul(\W|$)|(\W|^)trouduc(\W|$)|(\W|^)trou duc(\W|$)|(\W|^)trouduk(\W|$)|(\W|^)branleur(\W|$)|". //les mêmes au pluriel "(\W|^)connards(\W|$)|(\W|^)conards(\W|$)|(\W|^)salauds(\W|$)|(\W|^)chieurs(\W|$)|(\W|^)chiards(\W|$)|(\W|^)pédés(\W|$)|(\W|^)tarlouzes(\W|$)|(\W|^)trous du cul(\W|$)|(\W|^)trous-du-cul(\W|$)|(\W|^)trouducs(\W|$)|(\W|^)trous duc(\W|$)|(\W|^)trouduks(\W|$)|(\W|^)branleurs(\W|$)|". //On prend quelques précuations avec "con" qui ne peut être bloqué simplement (Chili con carne, le diner de cons, etc.) "petit(\s| )*con(\W|$)|gros(\s| )*con(\W|$)|sale(\s| )*con(\W|$)|(\W|^)de con(\W|$)|(\W|^)un con(\W|$)|". //les mêmes au pluriel "petits(\s| )*cons(\W|$)|gros(\s| )*cons(\W|$)|sales(\s| )*cons(\W|$)|des cons(\W|$)|". //On prend quelques précuations avec "pd" qui peut être un sigle ou une abréviation "petit(\s| )*pd|gros(\s| )*pd|sale(\s| )*pd|(\W|^)de pd|(\W|^)un pd|". //les mêmes au pluriel "petits(\s| )*pd|sales(\s| )*pd|(\W|^)des pd|". //Autres expressions à filtrer "(\W|^)va te faire(\W|$)|(\W|^)vas te faire(\W|$)|(\W|^)allez vous faire(\W|$)|(\W|^)dans le cul(\W|$)|(\W|^)mon cul(\W|$)|(\W|^)ton cul(\W|$)|(\W|^)ta gueule(\W|$)|(\W|^)vos gueules(\W|$)|(\W|^)de ta race(\W|$)|(\W|^)tu pues du(\W|$)|(\W|^)tu pues de la(\W|$)". # la dernière ligne n'a pas le | à la fin car le /i ferme le regex après "/i"; # Le "/" ferme l'expression régulière et "i" permet de ne pas tenir compte de la casse.

Si vous voyez d'autres mots à ajouter...

Mammouth du PHP | 965 Messages

05 mars 2009, 11:12

Oui mais les djeuns ils parlent le sms genre "konar 2 mor" et la tu l'as dans l'os non ?

ViPHP
ViPHP | 4039 Messages

05 mars 2009, 12:20

c'est fin tout ça... :?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 170 Messages

05 mars 2009, 15:37

Ok, il semblerait que ceci soit la solution :

Code : Tout sélectionner

(\W|^)con(\W|$)
\b qui représente une limite de mot est fait pour ça :

Code : Tout sélectionner

\bmot\b
Il faut dire que je ne suis pas le meilleur spécialiste des gros mots. ;-)
Si c'est tout ce que tu as trouvé, je confirme. :wink:

Si vous voyez d'autres mots à ajouter...
Ça risque d'être chaud et de ne pas plaire à tout le monde ... :)

Bizule
Invité n'ayant pas de compte PHPfrance

06 mars 2009, 02:59

Merci pour le tuyau blof!

Voici donc une nouvelle expression améliorée pour ceux qui auraient besoin d'un filtre à gros mots. Encore une fois, n'hésitez pas à proposer des ajouts/améliorations possibles :

Code : Tout sélectionner

$filter = "/". # Ouverture //Noms communs grossiers divers "\bmerde\b|\bcouille\b|\bsaloperie\b|". // \b permet de délimiter les mots //Les mêmes au pluriel "\bmerdes\b|\bcouilles\b|\bsaloperies\b|". //Autres mots grossiers "\bfuck\b|". //Verbes grossiers et leurs déclinaisons les plus probables "\bemmerd|". "\bemerd|". "\benmerd|". "\bchier\b|\bchié\b|\bchiée\b|\bchiant\b|\bchiants\b|\bchiante\b|\bchiantes\b|". "\bencul|". "\bniquer\b|\bnique\b|\bniques\b|\bniqué\b|\bniquée\b|". "\bnik ta\b|\bnike ta\b|\bnicke ta\b|". //Insultes adressées à une personne de sexe féminin "\bconne\b|\bconnasse\b|\bconasse\b|\bsalope\b|\bsaloppe\b|\bpétasse\b|\bpetasse\b|\bpute\b|\bputte\b|\bputain\b|\bpoufiasse\b|\bpouffiasse\b|\bchieuse\b|\bchiarde\b|\bgrognasse\b|". //Les mêmes au pluriel "\bconnes\b|\bconnasses\b|\bconasses\b|\bsalopes\b|\bsaloppes\b|\bpétasses\b|\bpetasses\b|\bputes\b|\bputtes\b|\bputains\b|\bpoufiasses\b|\bpouffiasses\b|\bchieuses\b|\bchiardes\b|\bgrognasses\b|". //Insultes adressées à une personne de sexe masculin "\bconnard\b|\bconard\b|\bsalaud\b|\bchieur\b|\bchiard\b|\bmerdeux\b|\bpédé\b|\btarlouze\b|\btrou du cul\b|\btrou-du-cul\b|\btrouduc\b|\btrou duc\b|\btrouduk\b|\bbranleur\b|". //les mêmes au pluriel "\bconnards\b|\bconards\b|\bsalauds\b|\bchieurs\b|\bchiards\b|\bpédés\b|\btarlouzes\b|\btrous du cul\b|\btrous-du-cul\b|\btrouducs\b|\btrous duc\b|\btrouduks\b|\bbranleurs\b|". //On prend quelques précuations avec "con" qui ne peut être bloqué simplement (Chili con carne, le diner de cons, etc.) "petit(\s| )*con\b|gros(\s| )*con\b|sale(\s| )*con\b|\bde con\b|\bun con\b|". //les mêmes au pluriel "petits(\s| )*cons\b|gros(\s| )*cons\b|sales(\s| )*cons\b|\bdes cons\b|". //On prend quelques précuations avec "pd" qui peut être un sigle ou une abréviation "petit(\s| )*pd|gros(\s| )*pd|sale(\s| )*pd|\bde pd|\bun pd|". //les mêmes au pluriel "petits(\s| )*pd|sales(\s| )*pd|\bdes pd|". //Autres expressions à filtrer "\bva te faire\b|\bvas te faire\b|\ballez vous faire\b|\bdans le cul\b|\bmon cul\b|\bton cul\b|\bta gueule\b|\bvos gueules\b|\bde ta race\b|\btu pues du\b|\btu pues de la\b". # la dernière ligne n'a pas le | à la fin car le /i ferme le regex après "/i"; # Le "/" ferme l'expression régulière et "i" permet de ne pas tenir compte de la casse.
[/code]