Réponses:
$name = str_replace(' ', '_', $name);
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);
$name = str_replace(' ', '_', $name);
Appelez http://php.net/str_replace :$input = str_replace(' ', '_', $input);
Utilisez str_replace :
str_replace(" ","_","Alex Newton");
Vous pouvez également le faire pour empêcher les mots de commencer ou de se terminer par des traits de soulignement comme _words_more_words_, cela éviterait de commencer et de se terminer par des espaces blancs.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Cela fait partie de mon code qui transforme les espaces en traits de soulignement pour nommer mes fichiers:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtrremplace des caractères uniques au lieu de chaînes, c'est donc une bonne solution pour cet exemple. C'est censé strtrêtre plus rapide que str_replace(mais pour ce cas d'utilisation, ils sont tous les deux extrêmement rapides).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace- c'est une solution évidente. Mais parfois, vous devez savoir quels sont exactement les espaces. J'ai un problème avec les espaces du fichier csv.
Il y avait deux caractères mais l'un d'eux était 0160 (0x0A0) et l'autre était invisible (0x0C2)
ma solution finale:
$str = preg_replace('/\xC2\xA0+/', '', $str);
J'ai trouvé le symbole invisible de la visionneuse HEX de mc (visionneuse de minuit - F3 - F9)
'/\s+/'?