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

Fermé
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021 - Modifié le 2 mai 2019 à 13:49
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021 - 2 mai 2019 à 23:20
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 !!!

A voir également:

2 réponses

jordane45 Messages postés 38437 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 février 2025 4 737
2 mai 2019 à 14:00
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

1
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021
2 mai 2019 à 14:09
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 !
0
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021
Modifié le 2 mai 2019 à 14:15
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...
0
jordane45 Messages postés 38437 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 février 2025 4 737
2 mai 2019 à 16:15
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
0
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021
Modifié le 2 mai 2019 à 19:12
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 !
0
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021
2 mai 2019 à 19:33
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...
0
josephsardin Messages postés 11 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 17 septembre 2021
2 mai 2019 à 23:20
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');

0