2011-06-21 3 views
106

J'ai un script PHP que les utilisateurs entreront un nom comme: Alex_Newton,Remplacement espaces par des underscores

Cependant, certains utilisateurs utiliseront un espace plutôt que d'un trait de soulignement, donc ma question est:

Comment faire Je remplace automatiquement les espaces avec Underscores en PHP?

+2

Si {quelqu'un a publié ce billet maintenant SO} (die (ce « trop étroit » question). // bas ont voté et fermé} SO ont repris hitlériens, ils semblent avoir oublié que ce doesn-t les intéresse! == réponse utile, – Gamemorize

Répondre

287
$name = str_replace(' ', '_', $name); 
+0

Merci beaucoup ça marche <3 – alex

+0

Merci beaucoup :) – Hitesh

10

Utilisez la fonction str_replace de PHP.

Quelque chose comme:

$str = str_replace(' ', '_', $str); 
1

Cela fait partie de mon code qui rend des espaces en underscores pour nommer mes fichiers:

$file = basename($_FILES['upload']['name']); 
$file = str_replace(' ','_',$file); 
44

Comme d'autres ont expliqué comment le faire en utilisant str_replace, vous pouvez également utiliser regex pour y parvenir.

$name = preg_replace('/\s+/', '_', $name); 
+8

C'est une meilleure solution dans le sens où elle remplace plusieurs espaces avec un seul trait de soulignement qui est généralement la sortie désirée. – frostymarvelous

+4

Aussi les onglets et tout ce que – Loupax

+1

je pense est la meilleure solution !! Je vous remercie... –

3

Vous pouvez aussi le faire pour empêcher les mots de début ou la fin des underscores comme _words_more_words_, ce qui éviterait début et de fin avec des espaces blancs.

$trimmed = trim($string); // Trims both ends 
$convert = str_replace('', '_', $trimmed); 
1

J'utilisé comme celui-ci

$option = trim($option); 
$option = str_replace(' ', '_', $option); 
0

Strtr remplace les caractères simples au lieu de chaînes, il est donc une bonne solution pour cet exemple. Supposément est plus rapide que str_replace (mais pour ce cas d'utilisation, ils sont tous les deux incommensurablement rapide).

echo strtr('Alex Newton',' ','_'); 
//outputs: Alex_Newton 
Questions connexes