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

josephsardin Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
josephsardin Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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