Respuestas:
$name = str_replace(' ', '_', $name);
Como otros han explicado cómo hacerlo usando str_replace, también puede usar regex para lograr esto.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Llame a http://php.net/str_replace :$input = str_replace(' ', '_', $input);
Utilice str_replace :
str_replace(" ","_","Alex Newton");
También puede hacer esto para evitar que las palabras comiencen o terminen con guiones bajos como _words_more_words_. Esto evitaría comenzar y terminar con espacios en blanco.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Esto es parte de mi código que hace espacios en guiones bajos para nombrar mis archivos:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtrreemplaza caracteres individuales en lugar de cadenas, por lo que es una buena solución para este ejemplo. Supuestamente strtres más rápido que str_replace(pero para este caso de uso, ambos son inconmensurablemente rápidos).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace- Es una solución evidente. Pero a veces necesitas saber cuáles son exactamente los espacios que hay. Tengo un problema con los espacios del archivo csv.
Había dos caracteres pero uno de ellos era 0160 (0x0A0) y otro era invisible (0x0C2)
mi solución final:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Encontré el símbolo invisible del visor HEX de mc (visor de medianoche - F3 - F9)
'/\s+/'?