¿Cómo eliminar todos los espacios de una cadena en PHP?
Eliminación de todos los espacios de una cadena en PHP: guía completa
¡Vas por buen camino! str_replace(" ", "", $string) efectivamente elimina todos los espacios normales de la cadena. Sin embargo, tienes razón al preocuparte por otros tipos de espacios como tabulaciones, espacios no separables (non-breaking spaces) o saltos de línea. Aquí te muestro varias soluciones:
Solución básica (espacios normales)
$cadena = "Привет мир! Как дела?";
$resultado = str_replace(" ", "", $cadena);
echo $resultado; // Muestra "Приветмир!Какдела?"
Solución con expresiones regulares (todos los espacios en blanco)
$cadena = "Привет мир!\tКак дела?\n";
$resultado = preg_replace('/\s+/', '', $cadena);
echo $resultado; // Elimina todos los tipos de espacios en blanco
Eliminar espacios extra manteniendo uno solo entre palabras
$cadena = "Привет мир! Как дела?";
$resultado = preg_replace('/\s+/', ' ', $cadena);
echo $resultado; // Muestra "Привет мир! Как дела?"
Usando preg_replace con caracteres Unicode (recomendado)
$cadena = "Привет мир! Как дела?";
$resultado = preg_replace('/[\pZ\pC]+/u', '', $cadena);
echo $resultado; // Maneja correctamente espacios Unicode como non-breaking spaces
La función preg_replace con el patrón /\s+/ es la más versátil, ya que elimina:
- Espacios normales
- Tabulaciones (\t)
- Saltos de línea (\n, \r)
- Espacios no separables (\xc2\xa0)
- Otros caracteres de espacio Unicode