begin process at 2012 05 24 22:15:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > CONTROLE DE RÉPÉTITION DE CARACTÈRES

CONTROLE DE RÉPÉTITION DE CARACTÈRES


 Information sur la source

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :eregreplace, antiflood Niveau :Débutant Date de création :28/04/2007 Vu :3 132

Auteur : LSGSERVAL

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Bonjour

Ce petit code permet de contôler les répétitions de caractères et aussi de l'interdire. Je l'ai fait suite à la demande d'un ami qui voulait éviter que les visiteurs de son site mettent des commentaires flooder en écrivant n'importe quoi.
Certes cela n'empechera pas les gens d'écrire n'importe quoi et n'importe comment, mais au moins il n'y aura pas de message type "aaaaaaaaaaaaaabbbbbbbbbbbbbbb".

Ma fonction ecrira "ab".

Pour l'instant, je n'ai traité que les minuscules, libre choix a vous de modifier le code pour traiter les majuscules aussi.

Source

  • <?
  • function antiflood ($chaine) {
  • for($cdascii=97;$cdascii<=123;$cdascii++) {
  • // le chiffre 3 permet de controler qu'il y a 3 fois de suite le meme caractère
  • // Il fait le changer pour controler la repetition des caractères et l'adapter a vos besoins
  • $chaine=ereg_replace(chr($cdascii)."{3,}",chr($cdascii),$chaine);
  • }
  • return $chaine;
  • }
  • $tflood = "aaaaaaaabbbbbbbcddddeefghijkllmmmmmmnnn";
  • echo "Valeur départ : ".$tflood."<br>";
  • echo "Nouvelle valeur : ".antiflood($tflood)."<br>";
  • ?>
<?
function antiflood ($chaine) {
for($cdascii=97;$cdascii<=123;$cdascii++) {
// le chiffre 3 permet de controler qu'il y a 3 fois de suite le meme caractère
// Il fait le changer pour controler la repetition des caractères et l'adapter a vos besoins
$chaine=ereg_replace(chr($cdascii)."{3,}",chr($cdascii),$chaine);
}
return $chaine;
}
$tflood = "aaaaaaaabbbbbbbcddddeefghijkllmmmmmmnnn";
echo "Valeur départ : ".$tflood."<br>";
echo "Nouvelle valeur : ".antiflood($tflood)."<br>";
?>



 Sources du même auteur

Source avec Zip Source avec une capture CALENDRIER SIMPLE

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CAPTCHA VISUELLE par kankrelune
Source avec Zip CAPTCHA NON VISUELLE par kankrelune
Source avec Zip ANTI-FLOOD PAR WORDLIST ET QUESTION ALÉATOIRE par grobs
Source avec Zip Source avec une capture FLASHANTIFLOOD SANS GD (BASIQUE) par f bnkcm
Source avec Zip Source avec une capture IMAGE ANTI-SPAM par coockiesch

Commentaires et avis

Commentaire de kankrelune le 28/04/2007 12:16:32

Utilise preg_replace plutot tu y gagnera en performance... de même preg_replace acceptant les tableaux prepare ton tableau via ta boucle et fait un preg_replace pour tout remplacer... .. .

function noRepeat( $str, $maxRepeat = 3)
{
    $alpha = 'abcdefghijklmnopqrstuvwxyz';
    $search = array();
    $replace = array();

    for($i=0,$len=strlen($alpha);$i<$len;++$i)
    {
        $search[] = '~'.$alpha[$i].'{'.$maxRepeat.',}~i';
        $replace[] = $alpha[$i];
    }

    return preg_replace( $search, $replace, $str);
}

@ tchaOo°

Commentaire de DiGhan le 28/04/2007 21:15:23

Mais pourquoi utilisez-vous tous la concaténation pour formater le contenu de vos variables ?
La fonction sprintf() n'est elle pas plus claire ?

sprintf('#%s{%d,}#i',$alpha[$i],$maxRepeat);

Je suis d'accord que cette fonction est à éviter sur de grosses itérations (concaténation plus rapide). Seulement, je pense que dans certains cas, il vaut mieux soutenir la lisibilité que la rapidité.

Commentaire de audayls le 29/04/2007 23:38:11

Perso je trouve que la concaténation est plus lisible que la fonction sprintf() :-P

Commentaire de LaurentKOogar le 30/04/2007 07:08:47

perso un gars qui hack un form avec des:: "xxxxxxxxxaaaaaaaaaaaaaabbbbbbbbbbbbbbb". Ce n'est pas intentionnel, je lui remplace nada, je le banni !!

KOogar

Commentaire de kankrelune le 30/04/2007 14:05:45

@ LaurentKOogar... ça dépend du forum... de nos jour les mots à rallonge genre looooooool sont courant sans pour autant être mal intentionnés... .. . ;o)

@ tchaOo°

Commentaire de LaurentKOogar le 30/04/2007 15:11:02

exact ;-) de l'autre coté aussi tu as des exceptions: -- > elle a creee une toile....

Pour un forum, je me vois mal hasher les posts de mes membres, je modere manuel ;-)

Commentaire de coucou747 le 01/05/2007 01:17:45 administrateur CS

le ban a ses raisons que la raison .... on s'arretera la...

ce code fait quelquechose de disons pas clean je m'explique :

la peu importe la chaine, tu appliques de nombreuses fois la regexp, alors qu'un array suffirait
peu importe la chaine, meme si les lettres ne sont pas dedans, la regexp tentera quand meme de remplacer... c'est inutile...

et une seconde boucle, suffirait pour remplacer ce genre de choses...

on ne relevera pas l'incoherence cote sprintf :) t'es pas en C mec...

Commentaire de DiGhan le 01/05/2007 13:59:48

tu n'as pas bien lu mon message on dirait...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales