Supprimer les espaces

[Résolu]
Signaler
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonsoir,

Je cherche à supprimer les espaces dans une recherche faite par un formulaire.
Ce sont des noms de famille qui peuvent être en 2 ou 3 morceaux qu'il faudrait réunir.
J'ai trouvé une question à ce sujet sur le forum mais les solutions proposées ne fonctionnaient pas.

Quelqu'un a une idée ?

15 réponses

Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006

preg_replace ('/\s/','',$var)

J'ai vérifié, ça marche.
Messages postés
128
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
12 août 2005

Bonsoir,



str_replace je pense.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Malheureusement non, à moins que le caractère "espace" corresponde à un terme que je ne connais pas ? Ainsi que "rien" ?

En tous cas comme ça ça ne marche pas :
str_replace(' ','',$_POST['recherche']);


$_POST['recherche'] est bien sûr la requête de mon formulaire.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



$_POST['recherche'] = str_replace(' ','',$_POST['recherche']);



sinon en effet ca ne marchera pas.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

C'est ce que j'ai fait, j'ai juste retiré le nom de la variable dans mon message précédent. Mais ça ne marche par.
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006

Essaye :
<?
$recherche=$_POST['recherche'];
$recherche=preg_replace('@([\r\n])[\s]+@','',$recherche);
echo "Output: $recherche";
?>
Messages postés
164
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
25 août 2008

Vous vous compliquez beaucoup trop la vie...



il existe la fonction trim()



bonne continuation,



cordialement,

kevin (kegi@hotmail.com)
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006

lol oui mais je crois que trim() c'est plutot pour supprimer les espaces en début et fin de chaine... Hors je crois que le but c'est de supprimer tous les espaces de la chaine.
Donc je maintiens :
<?
$recherche=$_POST['recherche'];
$recherche=preg_replace('@([\r\n])[\s]+@','',$recherche);
echo "Output: $recherche";
?>
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Je connaissais trim() mais effectivement c'est pour supprimer des espaces au début et à la fin.
L'autre solution proposée ne marche pas. Pour la recherche sur "n ous" j'ai (en rouge) :


$ta = $_POST['recherche'];
$ta = preg_replace([mailto:'@([\r\n])[\s]+@','',$ta '@([\r\n])[\s]+@','',$ta]); // supprime les espaces // $ta remplace $recherche de la solution proposée
$tb = strtoupper ($recherche); // met le mot cherché en majuscules
$tc = strtolower ($recherche); // met le mot cherché en minuscules
$td = ucfirst ($recherche); // met le mot cherché avec une première lettre en majuscules


//on affiche le nombre de résultats trouvés
print ' Pour le mot '.$ta.' il y a '.$res.' résultat(s)_________http://local.free.fr_________BASE DES ACTES NOTARIES DU SECTEUR HALLUIN-TOURCOING

';
echo $ta; // affiche n ous
echo $tb; // affiche N OUS
echo $tc; // affiche n ous
echo $td; // affiche N ous
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Oups... remplacer les $recherche dans $stb, $tc, $td
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Voilà la meilleure, une partie de mon message a disparue ! Je complète :

Oups... remplacer les $recherche dans $stb, $tc, $td par $ta.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Chez Nexen ils proposent :


Suppression des espaces,
----

Cet exemple supprime les espaces en trop dans une chaîne.

<?php
$str = 'foo   o';
$str = preg_replace('/\s\s+/', ' ', $str);

// Affichera 'foo o'
echo $str;
?> 


Mais ça ne marche pas non plus. En fait ça supprime le 2ème espace en trop mais pas le premier.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Impec la réponse de w_minisplash_w, ça marche. Merci.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,


preg_replace ('/\s/','',$var)



quelle solution de porc !!! utiliser des pregs alors qu'on n'a rien de complexe là dedans...



$var=str_replace(array(' ', chr(10), chr(13), "\t"), array('','','',''),$var);

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
preg_replace pour ça, mais ça va pas non...!!
tout à fait d'accord avec Coucou.