Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2007, 16h59   #1
Invité régulier
 
Inscription : janvier 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 38
Points : 9
Points : 9
Par défaut Remplacer plusieurs espaces succesifs par un seul

Bonjour

J'aimerai dans une chaine de caractère supprimer les espaces inutile.

Par exemple: La moto du voisin.

Dans cette chaine il y a 3 espaces entre "moto" et "du" et 4 espaces entre "du" et "voisin".

Et j'aimerai pouvoir supprimer les espaces pour qu'il n'en reste qu'un espace entre chaque chaine.

j'ai tester la fonction :
Code :
1
2
 
substr_count($_POST['text']," ");
mais cela ne fonctionne pas.

Merçi pour votre aide.
Marcus15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 17h03   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
tu as essayé :

Code :
substr_count($_POST['text'],"\s\s");
?
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 17h28   #3
Invité régulier
 
Inscription : janvier 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 38
Points : 9
Points : 9
Cette fonction enleve tous les espaces, moi je veux qu'il en reste un entre chaque mot.
Marcus15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 17h31   #4
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Code :
str_replace ( "\s\s", "\s", $_POST['text']);
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 18h13   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 33
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 33
Points : 36
Points : 36
Envoyer un message via MSN à sylvanillo Envoyer un message via Skype™ à sylvanillo
Code :
1
2
3
4
5
 
// tant qu'il y a au moins 2 espaces contigus, on en enleve 1
while (($pos = strpos ($myString, "\s\s")) !== FALSE) {
  $myString = substr_replace ($myString, "\s", $pos, 2);
}
sylvanillo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 18h20   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Euh ... le \s n'est pas valable dans les fonctions qui ne prennent pas en charge les expressions régulières
Code :
1
2
3
$texte = "  Dany    va   à la \t pêche \t ";
$texte = preg_replace('/\s{2,}/', ' ', $texte);
echo "<pre>$texte</pre>";

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 18h28   #7
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 33
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 33
Points : 36
Points : 36
Envoyer un message via MSN à sylvanillo Envoyer un message via Skype™ à sylvanillo
oui mais c'est parce que si je poste sur ce forum deux espaces consécutifs, la page va en afficher un et du coup mon code ne vaudrait plus rien
sylvanillo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 09h35   #8
Invité régulier
 
Inscription : janvier 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 38
Points : 9
Points : 9
Bonjour,

Merçi pour toutes vos reponses, j'ai utilisé celle de julp.

J'aimerai avoir une petite explication sur la fonction.

Je ne comprend pas le
Merçi.
Marcus15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 11h48   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
\s : désigne les caractères de types espaces (l'espace lui-même, la tabulation, ...).
{2,} : signifie au moins deux occurences successives
Donc \s{2,} : au moins deux caractères de types espaces successifs

A noter que les expressions régulières étant gourmandes par défaut : s'il y en a plus de deux (10 par exemple) il les prendra tous. En effet, dans ce cas, l'expression régulière cherche à faire la correspondance la plus longue, d'où le terme de gourmandise. (Comportement que l'on peut changer sur les fonctions PCRE via le flag U).

Citation:
Envoyé par sylvanillo
oui mais c'est parce que si je poste sur ce forum deux espaces consécutifs, la page va en afficher un
Pas avec les balises code (regardez l'indentation).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h25.


 
 
 
 
Partenaires

Hébergement Web