terça-feira, 11 de março de 2008

Removendo espaços do PHP

Lendo o primeiro capítulo do livro PHP 5 in Practice, de Elliot White III, vi uma seção interessante de ser postada.

As vezes queremos eliminar espaços em branco das nossas strings, e frequentemente usamos a função trim() . Só que as vezes queremos eliminar espaços dentro das strings, e quebramos a cabeça para fazer. Usando expressões regulares é fácil. Veja o exemplo a seguir:
$str = " This line  contains\tliberal \r\n use of   whitespace.\n\n";

// First remove the leading/trailing whitespace
$str = trim($str);

// Now remove any doubled-up whitespace
$str = preg_replace('/\s(?=\s)/', '', $str);

// Finally, replace any non-space whitespace, with a space
$str = preg_replace('/[\n\r\t]/', ' ', $str);

// Echo out: 'This line contains liberal use of whitespace.'
echo "
{$str}
";

?>
O exemplo acima funciona da seguinte forma:
  • Primeiro usa o trim() para limpar os espaços do início e do final da string.
  • Depois usa o preg_replace() para remover os espaços duplicados.
    • O caracter de escape \s significa "qualquer espaço em branco".
    • A notação (?=) é usada para realizar pesquisa adiante. Na prática ele significa "qualquer espaço que é seguido por outro espaço". Isso remove os duplicados, deixando apenas um espaço em branco.
  • Finalmente, usamos outra expressão regular [\n\r\t] para encontrar as quebras de linha (\n), "retornos de carro" (\r) ou tabulações (\t), e substituímos tudo isso por um espaço em branco.

Extraído da seção 1.2.1 do livro PHP 5 in Practice

3 comentários:

Cristiano Oliveira disse...

Muito bom, ajudou bastante. Parabéns!

Cristiano Oliveira disse...

Ajudou bastante. Parabéns!

Daniel SP disse...

Mano, você salvou a minha vida!
Fiz meus códigos, mas do nada o Notepad travou e perdi tudo.
Aí usei os seu tutorial e ficou massa!
Chega de digitar, agora é só enviar e imprimir meus docs!!
Tnx!!!!!!