Menu

Limiter à 2 le nombre de lettres répétées ?

Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
-
Bonjour à tous,

J'ai un moteur de recherche sur l'un de mes sites de bruitages : LaSonotheque.org
Parfois, certain visiteurs triplent les lettres, voir plus. Ils peuvent chercher "Bzzzzz" pour trouver un son d'abeille ou "Zzzzzzzzzzzzzz" pour un ronflement...

Je cherche une idée pour réduire les répétitions à 2, que ça recherche "Bzz" ou "Zz" seulement...

Mille mercis !!!

Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
25626
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 mai 2019
1623
1
Merci
Bonjour,
Tu peux utiliser les expressions régulères (regex) aussi bien côté PHP que côté client (via du Javascript par exemple).

par exemple avec le pattern :

(.)\1

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39041 internautes nous ont dit merci ce mois-ci

josephsardin
Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
-
Merci Jordane45,

Je dois avouer que je ne sais pas trop appliquer ton aide. Je suis assez nul en php, je me contente de copier des lignes et de les adapter dès que j'arrive à les comprendre. Je ne sais pas créer.
Je connais regex de nom, mais pas plus...
Aurais-tu une idée de ligne de code ?

Mille mercis !
josephsardin
Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
-
Tu pense à un remplacement ? du style zzz, zzzz, zzzzz en zz ?
Si c'est le cas, je rêvais d'une solution plus simple. Parce qu'il ne s'agit pas que de Z, mais de toutes les lettres. Jusqu'à 10 à la suite.

Aaaaaah
Oooooooooooh
Tzzzzzz
Tiiiiiiiiiic
Grrrrrrrr
...

Ca me fait une foule de remplacement... 26 lettres en 10 versions, 260 trucs à remplacer, c'est long comme ligne de code...
jordane45
Messages postés
25626
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 mai 2019
1623 -
Côté "serveur" :
En PHP tu peux automatiquement faire du remplacement en te basant sur une regex
https://www.php.net/manual/fr/function.preg-replace.php
Si tu as le mot , Oooooooooooh tu pourrais le remplacer (dans le code ) par Oh par exemple


Côté client :
En Javascript, tu pourrais détecter que l'utilisateur a saisie un même caractère plusieurs fois et supprimer le "doublon" ou sinon, comme en php, faire un replace automatique
josephsardin
Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
-
Jordane45,

J'ai fais ça :
echo preg_replace( '/(.)\1/','$1','A BB CCC DDDD EEEEE FFFFFF');

Mais ça donne ça :
A B CC DD EEE FFF

Et :
echo preg_replace('#(.)\1+#','$1','A BB CCC DDDD EEEEE FFFFFF');

Donne :
A B C D E F

Alors que je cherche A BB CC DD EE FF...

Je cherche encore :)
Je ne comprend pas trop ce que j'ai écris, mais ça ne marche pas assez bien encore.

Merci pour ton aide !
josephsardin
Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
-
Je viens de faire ça :
echo preg_replace('#(.)\1+#','$1$1','A BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH abcdefgh');

Ce qui donne ça :
A BB CC DD EE FF GG HH abcdefgh

PARFAIT ?! Ca semble bien écrit ?
Désolé pour la question, je ne comprend pas un mot du code que j'écris :( J'ai juste testé des milliers de combinaisons...
Commenter la réponse de jordane45
Messages postés
7
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
2 mai 2019
0
Merci
Pour les prochains à se poser la question, voici la réponse que j'ai trouvé pour le moment :

echo preg_replace('#(.)\1+#','$1$1','A BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH abcdefgh');

Commenter la réponse de josephsardin