Skip to content

Instantly share code, notes, and snippets.

Forked from zmsaunders/filters.php
Last active February 6, 2023 04:11
What would you like to do?
Laravel Filter Helper - Compress HTML Output & Strip Comments
### --- Snip --- ###
App::after(function($request, $response)
// HTML Minification
if(App::Environment() != 'local')
if($response instanceof Illuminate\Http\Response)
$output = $response->getOriginalContent();
$filters = array(
'/<!--([^\[|(<!)].*)/' => '', // Remove HTML Comments (breaks with HTML5 Boilerplate)
'/(?<!\S)\/\/\s*[^\r\n]*/' => '', // Remove comments in the form /* */
'/\s{2,}/' => ' ', // Shorten multiple white spaces
'/(\r?\n)/' => '', // Collapse new lines
$output = preg_replace(array_keys($filters), array_values($filters), $output);
### --- Snip --- ###
Copy link

Really nice! I think the HTML Comments migth be neccesary either way.

Copy link

ghost commented May 22, 2014

Thanks for the alteration that allows for HTML comments.

One issue: Line 17 (shorten multiple white spaces) should be reduced to a space rather than nothing. The problem that I had with this was I had

 class="classOne  classTwo" //two spaces

and the white space reducer was reducing it down to


thus breaking my theme.

Copy link

AucT commented Jun 21, 2014

thx for this

Copy link

@RodrigoEspinosa we prefer to not use HTML comments especially since Laravel ships with blade you can just use blade comments that won't show up in the output {{-- My Coment --}}

@tylerssn are you sure you are having this problem? It's currently replacing it with one space like you suggest '/\s{2,}/' => ' ',

@AucT welcome and also thanks to the original contributor

Copy link

Learning Laravel. Where do you put this to make it work?

Copy link

Same question here:
Learning Laravel. Where do you put this to make it work?

Copy link

nuqz commented Mar 13, 2017

@rotaercz @KIrkOlson
In Laravel 4.x you should put it into app\filters.php

In modern Laravel 5.x according to the docs you should put it into middleware (see "Before & After Middleware" section).

public function handle($request, Closure $next) {
        $response = $next($request);

        // HTML Minification

        return $response;

Copy link

webciter commented Aug 13, 2018

Full Laravel 5.x Middleware to add to your projects,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment