Respostas:
$name = str_replace(' ', '_', $name);
Como outros explicaram como fazê-lo usando str_replace
, você também pode usar o regex para conseguir isso.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Ligue para http://php.net/str_replace :$input = str_replace(' ', '_', $input);
Use str_replace :
str_replace(" ","_","Alex Newton");
Você também pode fazer isso para impedir que as palavras iniciem ou terminem com sublinhados como _words_more_words_. Isso evitaria o início e o término com espaços em branco.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Isso faz parte do meu código que transforma espaços em sublinhados para nomear meus arquivos:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtr
substitui caracteres únicos em vez de cadeias, por isso é uma boa solução para este exemplo. Supostamente strtr
é mais rápido que str_replace
(mas, para este caso de uso, ambos são imensuravelmente rápidos).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace
- é uma solução evidente. Mas às vezes você precisa saber quais são exatamente os espaços que existem. Estou com um problema com espaços no arquivo csv.
Havia dois caracteres, mas um deles era 0160 (0x0A0) e outro era invisível (0x0C2)
minha solução final:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Encontrei o símbolo invisível do visualizador HEX do mc (visualizador da meia-noite - F3 - F9)
'/\s+/'
?