public static function HTMLMin($input) { if (trim($input) === "") { return $input; } $input = preg_replace_callback('#<([^\\/\\s<>!]+)(?:\\s+([^<>]*?)\\s*|\\s*)(\\/?)>#s', function ($matches) { return '<' . $matches[1] . preg_replace('#([^\\s=]+)(\\=([\'"]?)(.*?)\\3)?(\\s+|$)#s', ' $1$2', $matches[2]) . $matches[3] . '>'; }, str_replace("\r", "", $input)); if (strpos($input, ' style=') !== false) { $input = preg_replace_callback('#<([^<]+?)\\s+style=([\'"])(.*?)\\2(?=[\\/\\s>])#s', function ($matches) { return '<' . $matches[1] . ' style=' . $matches[2] . Template::CSSMin($matches[3]) . $matches[2]; }, $input); } return preg_replace(array('#<(img|input)(>| .*?>)#s', '#(<!--.*?-->)|(>)(?:\\n*|\\s{2,})(<)|^\\s*|\\s*$#s', '#(<!--.*?-->)|(?<!\\>)\\s+(<\\/.*?>)|(<[^\\/]*?>)\\s+(?!\\<)#s', '#(<!--.*?-->)|(<[^\\/]*?>)\\s+(<[^\\/]*?>)|(<\\/.*?>)\\s+(<\\/.*?>)#s', '#(<!--.*?-->)|(<\\/.*?>)\\s+(\\s)(?!\\<)|(?<!\\>)\\s+(\\s)(<[^\\/]*?\\/?>)|(<[^\\/]*?\\/?>)\\s+(\\s)(?!\\<)#s', '#(<!--.*?-->)|(<[^\\/]*?>)\\s+(<\\/.*?>)#s', '#<(img|input)(>| .*?>)<\\/\\1>#s', '#( ) (?![<\\s])#', '#(?<=\\>)( )(?=\\<)#', '#\\s*<!--(?!\\[if\\s).*?-->\\s*|(?<!\\>)\\n+(?=\\<[^!])#s'), array('<$1$2</$1>', '$1$2$3', '$1$2$3', '$1$2$3$4$5', '$1$2$3$4$5$6$7', '$1$2$3', '<$1$2', '$1 ', '$1', ""), $input); }
function voidEngineAction($name) { switch (mb_strtolower($name)) { case "engine.getjavascript": header('Content-Type: application/javascript'); $files = glob(__DIR__ . "/../../template/assets/js/*"); $jsFiles = ""; foreach ($files as $value) { $jsFiles .= file_get_contents($value) . PHP_EOL; } exit(Template::JSMin($jsFiles)); break; case "engine.getcss": header("Content-Type: text/css"); $files = glob(__DIR__ . "/../../template/assets/css/*"); $cssFiles = ""; foreach ($files as $value) { $cssFiles .= file_get_contents($value) . PHP_EOL; } exit(Template::CSSMin($cssFiles)); break; default: //Template::load404error(); break; } }