Compactando o (X)HTML/CSS de suas páginas

Postado por: Anderson Custódio em

Fiz um código super simples, para deixar qualquer (X)HTML ou CSS em uma única linha, sem tabs e sem comentários.

Sobre o CSS seria interessante você usar junto com esta dica do Bruno Alves.

Bom, primeiro lhe apresento a função que tira todos os Enters, tabs, comentários CSS e (X)HTML. Basta colocar no index.php de seu site.

function strip($buffer) {
  return trim(preg_replace('/\n|\r|\t|/', ' ', $buffer));
}

Agora em seguida é só usar o buffer do PHP com a função strip no callback.

Exemplo com o index do WordPress:

define('WP_USE_THEMES', true);

function strip($buffer) {
	return trim(preg_replace('/\n|\r|\t|/', ' ', $buffer));
}

ob_start('strip');
	require('./wp-blog-header.php');
ob_end_flush();

E pronto, todo (X)HTML que seu WordPress gerar vai ficar em uma única linha e sem comentários. Lembrando que você pode usar este código em qualquer sistema. É só usar o código corretamente no index.

PS: Sobre o vídeo tutorial “Como trabalhar com URLs Amigáveis” peço desculpas pela demora, nele vou ensinar técnicas avançadas para gerenciar URLs e como usar slugs.

Update: Como haviam dito o expressão para remover os comentários teriam que ser mais complexa, como na época conhecia só o básico não cheguei a entender os comentários. Para não ter problema está apenas a parte que deixa todo código em uma única linha. Desculpe, logo farei um post sobre expressões regulares e mostrarei como fazer essa expressão. Até lá :)

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Anderson Custódio

Anderson Custódio de Oliveira é desenvolvedor web, utiliza como linguagem server side o PHP e mora na cidade de Cafelândia - SP.

11 Responses to “Compactando o (X)HTML/CSS de suas páginas”

  1. Ótimo código, ótima sacada Anderson.

  2. Cara a solução parece ser boa mas o que acontece se eu tiver comentários condicionais?

  3. Diego Teixeira

    Mas isto também daria problema com a formatação de textos dentro da tag não daria? Tem como colocar uma “negação” para “(.*)”?

  4. Diego Teixeira

    tag PRE, desculpe.

    Mas isto também daria problema com a formatação de textos dentro da tag PRE não daria? Tem como colocar uma “negação” para “TAGPRE(.*)TAGPRE”?

    (não tem como postar tags como textp aqui nos comentários? rsrs)

  5. @Diego Teixeira: Teria que fazer alguns ifs para ignorar, depois vou fazer um, só não digo quando que to sem tempo, e estou devendo uma video aula de URLs Amigáveis faz tempo. =/

    Update: Nade de ifs falei besteira, é só expressão regular e nada mais :)

  6. A dica é boa, mas ainda prefiro usar o Minify.
    http://code.google.com/p/minify/

  7. Vocês sempre compactam os códigos Xhtml/CSS, ou levam em consideração a projeção do projeto?
    Acho complicado o uso da compactação por dificultar a manuteção do código.

    O que você acham sobre isso, manutenção?
    Ótimo post!

  8. Vlw pela função usei ela pra compactar os arquivos XML de Feed e sitemap

Leave a Reply