Como remover todos os espaços de uma string em PHP: do iniciante ao avançado
\n\nImagine a situação: você recebe um número de telefone do usuário, e ele o digitou com vários espaços, tabulações e quebras de linha. Ou está analisando um arquivo CSV onde os valores estão cheios de espaços extras. Familiar? A pergunta "How do I strip all spaces out of a string in PHP?" no Stack Overflow acumulou dezenas de milhares de visualizações — e não é por acaso. Todo desenvolvedor PHP, mais cedo ou mais tarde, enfrenta a tarefa de limpar uma string de caracteres de espaço.
\n\nHoje, não vamos apenas dar a resposta. Vamos fazer uma verdadeira investigação: analisar todos os métodos populares, comparar seu desempenho e descobrir qual deles vale a pena usar em projetos reais. Preparem seus IDEs — vai ser interessante.
\n\nPor que não usar trim()
\n\nVamos começar com um erro comum. Muitos iniciantes escrevem:
\n\n$clean = trim($dirty);\n\nE acham que o problema está resolvido. Mas trim() remove espaços apenas do início e do final da string. Se houver espaços internos, eles permanecem. É como varrer apenas a entrada, deixando toda a sujeira no centro da sala.
Para nossa tarefa, precisamos de ferramentas mais poderosas. Vamos analisar três abordagens principais para remover todos os espaços de uma string em PHP.
\n\nMétodo 1: str_replace — o rei da simplicidade
\n\nA maneira mais óbvia e frequentemente usada é a função str_replace(). Ela substitui todas as ocorrências de uma substring por uma string vazia. Simples como dois mais dois:
<?php\n$string = "Olá, mundo! Como vai?";\n$no_spaces = str_replace(' ', '', $string);\necho $no_spaces; // "Olá,mundo!Comovai?"\n?>\n\nNo entanto, há um detalhe aqui. str_replace() remove apenas espaços comuns (caractere de código 32). E quanto a tabulações, espaços inseparáveis ou quebras de linha? Para uma limpeza completa, você precisará passar um array:
<?php\n$string = "Olá\\tmundo!\\nComo vai?";\n$remove = [' ', "\\t", "\\n", "\\r"];\n$no_spaces = str_replace($remove, '', $string);\necho $no_spaces; // "Olámundo!Comovai?"\n?>\n\nVantagens: alta velocidade, legibilidade do código.
\nDesvantagens: é necessário listar explicitamente todos os tipos de espaços.
E o str_ireplace?
\n\nAlguns desenvolvedores confundem str_replace com str_ireplace. A segunda função faz o mesmo, mas sem diferenciar maiúsculas de minúsculas. Para espaços, não há diferença — um espaço não tem maiúsculas ou minúsculas. Então, use str_replace sem medo.
Método 2: preg_replace — o poder das expressões regulares
\n\nQuando você precisa remover todos os caracteres de espaço de uma vez, as expressões regulares vêm em socorro. A classe de caracteres \\s inclui espaço, tabulação, quebra de linha, retorno de carro e até tabulação vertical:
<?php\n$string = "Olá\\tmundo!\\nComo vai?";\n$no_spaces = preg_replace('/\\s+/', '', $string);\necho $no_spaces; // "Olámundo!Comovai?"\n?>\n\nObserve o sinal de mais (+) após \\s. Ele significa "um ou mais caracteres de espaço". Se você escrever apenas /\\s/, cada caractere de espaço será substituído individualmente — isso também funciona, mas é um pouco mais lento.
Vantagens: versatilidade, cobre todos os tipos de espaços.
\nDesvantagens: cerca de 2 a 3 vezes mais lento que str_replace em grandes volumes de dados.
Quando escolher preg_replace
\n\nUse este método se:
\n- \n
- Você não sabe exatamente quais caracteres de espaço podem aparecer \n
- Precisa remover todos os caracteres "invisíveis", incluindo os raros (como espaço inseparável Unicode) \n
- Está processando strings de fontes externas (API, parsing de HTML) \n
Método 3: strtr — a carta na manga
\n\nPoucos sabem, mas o PHP tem a função strtr() (