731 votes

Comment supprimer tous les espaces d'une chaîne de caractères en PHP ?

Comment puis-je strip / supprimer tous espaces d'un chaîne de caractères en PHP ?

J'ai un chaîne de caractères comme $string = "this is my string";

La sortie devrait être "thisismystring"

Comment puis-je faire ça ?

0 votes

2 votes

Techniquement, il s'agit d'une question légèrement différente de la question du doublon. Parfois, vous pouvez vouloir supprimer les espaces sans tabulation.

1 votes

Voici le moyen le plus court de le faire, au cas où vous auriez besoin de gagner au Code Golf : strtr($string,[' '=>'']);

1640voto

Mark Byers Points 318575

Voulez-vous dire seulement les espaces ou tous les espaces blancs ?

Pour les espaces seulement, utilisez str_replace :

$string = str_replace(' ', '', $string);

Pour tous les espaces blancs (y compris les tabulations et les fins de ligne), utilisez preg_replace :

$string = preg_replace('/\s+/', '', $string);

(De ici ).

49 votes

1er, vous n'avez pas besoin de la + . $string = preg_replace('/\s/', '', $string); devrait fonctionner correctement. La seule chose qui ne fonctionne pas pour moi, ce sont les espaces insécables. J'ai dû utiliser ceci : $string = preg_replace('~\x{00a0}~','',$string); pour les supprimer. Merci à cette réponse de stackoverflow : stackoverflow.com/a/12838189/631764

44 votes

Question d'un nouveau venu, par intérêt : Quelle est la différence entre space et whitespace ? N'est-ce pas la même chose ?

56 votes

@EchtEinfachTV l'espace est le caractère d'espace régulier entre les mots, l'espace blanc est tout type d'espace dans le texte : espace régulier, nouvelle ligne, tabulation, etc.

68voto

Arkaaito Points 4392

Si vous voulez supprimer tous les espaces blancs :

$str = preg_replace('/\s+/', '', $str);

Voir le 5e exemple sur la documentation de preg_replace . (Notez que j'ai initialement copié cela ici).

Edit : les commentateurs ont souligné, et ont raison, que str_replace est meilleur que preg_replace si vous souhaitez simplement supprimer le caractère espace. La raison d'utiliser preg_replace serait de supprimer tous les espaces blancs (y compris les tabulations, etc.).

8 votes

" Si vous n'avez pas besoin de règles de remplacement fantaisistes (comme les expressions régulières), vous devriez toujours utiliser cette fonction [ str_replace ] au lieu de ereg_replace() ou preg_replace() ."

2 votes

Je ne suggérerais pas l'utilisation d'expressions régulières pour la simple suppression des espaces. str_replace pour les espaces uniquement, preg_replace pour tous les espaces blancs.

1 votes

@Johannes & MasterPeter : D'accord, mais le PO a laissé un commentaire sur une autre réponse qu'il veut dépouiller l'espace blanc.

47voto

codaddict Points 154968

Si vous savez que l'espace blanc est uniquement dû aux espaces, vous pouvez utiliser :

$string = str_replace(' ','',$string); 

Mais si cela peut être dû à l'espace, à la tabulation... vous pouvez utiliser :

$string = preg_replace('/\s+/','',$string);

1 votes

Cela ressemble à un doublon de une réponse antérieure

17voto

David Heggie Points 2255

str_replace fera l'affaire ainsi

$new_str = str_replace(' ', '', $old_str);

0 votes

Cela ressemble à un doublon de une réponse antérieure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X