-
-
Save garagesocial/6059962 to your computer and use it in GitHub Desktop.
Laravel Filter Helper - Compress HTML Output & Strip Comments
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
### --- 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); | |
$response->setContent($output); | |
} | |
} | |
}); | |
### --- Snip --- ### |
Learning Laravel. Where do you put this to make it work?
Same question here:
Learning Laravel. Where do you put this to make it work?
@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;
}
Full Laravel 5.x Middleware to add to your projects, https://github.com/webciter/RemoveExcessWhitespaceMiddleware
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@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