Gérer les espaces avec regex
Résolu
nantenaina67
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 5690 Statut Contributeur -
ElementW Messages postés 5690 Statut Contributeur -
bonjour à vous tous ! qui peut me donner le regex dont le but est le suivant: remplacer un ou plusieurs espaces consécutif par un seul ! ex: si l'utilisateur m'envoie ses prénoms, dont il met plusieurs espaces entre les deux prénoms, je le remplace par un seul
3 réponses
-
Salut nantenaina67,
La documentation depreg_replace()
donne, dans son "Example #4 Strip whitespace", la regexp recommandée.
https://www.php.net/manual/en/function.preg-replace.php
Example #4 Strip whitespace
This example strips excess whitespace from a string.
<?php $str = 'foo o'; $str = preg_replace('/\s\s+/', ' ', $str); // This will be 'foo o' now ?>
Tu peux aussi utiliser celle proposée par Whismeril, qui fonctionne aussi très bien, et qui donnerait ceci intégrée à la syntaxe depreg_replace()
:$str = preg_replace('/ {2,}/', ' ', $str);...
Dal -
Salut, pas besoin de regex pour ça :
$nom = "Lorem Ipsum"; $nomsansespace = str_replace(" ", " ", $nom); echo $nomsansespace; //output : "Lorem ipsum"
N'oublie pas de cliquer sur "Merci" et de mettre en résolu si ça t'as aidé ;)
-
L'affichage par le navigateur écrase les espaces, mais ils sont bien là et tu le vois si au lieu de faire ton echo, tu fais
echo "<pre>$nomsansespace</pre>";
.
Le résultat, là.
-
-
Bonjour
Et si y’a 3 ou plus espaces? Ça ne marche pas ton code.
Une regex est en fait très adaptée
Voici un exemple, copie colle ce lien, et clique sur l’onglet « Context »http://regexstorm.net/tester?p=+%7b2%2c%7d&i=Un+espace%3d%3epas+de+remplacement%2c+deux++espaces%3d%3eremplacement%2c+trois+++espaces%2c+quatre++++espaces%2c+ou+plus%3d%3eremplacement&r=E