Avatar ·

¿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