我正在寻找一种方法来结合外部css文件,甚至内联css代码与php
,在加载html之前,然后将它们添加到一个外部文件与页面中的所有css代码。
我想为js
文件也添加这个功能。
目前我有一个minify html函数,从html中删除空格和新行。
function _minify_html($input) {
return preg_replace_callback('#<'s*([^'/'s]+)'s*(?:>|('s[^<>]+?)'s*>)#', function($m) {
if(isset($m[2])) {
return '<' . $m[1] . preg_replace(
array(
// From `defer="defer"`, `defer='defer'`, `defer="true"`, `defer='true'`, `defer=""` and `defer=''` to `defer` [^1]
'#'s(checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)(?:=([''"]?)(?:true|'1)?'2)#i',
// Remove extra white-space(s) between HTML attribute(s) [^2]
'#'s*([^'s=]+?)(=(?:'S+|([''"]?).*?'3)|$)#',
// From `<img />` to `<img/>` [^3]
'#'s+'/$#'
),
array(
// [^1]
' $1',
// [^2]
' $1$2',
// [^3]
'/'
),
str_replace("'n", ' ', $m[2])) . '>';
}
return '<' . $m[1] . '>';
}, $input);
}
function minifyHtml($buffer) {
$buffer = _minify_html($buffer);
return
// remove ws outside of all elements
preg_replace( '/>(?:'s's*)?([^<]+)(?:'s's*)?</s', '>$1<',
// remove ws around all elems excepting script|style|pre|textarea elems
preg_replace(
'/'s+(<''/?(?!script|style|pre|textarea)'b[^>]*>)/i', '$1',
// trim line start
preg_replace( '/^'s's*/m', '',
// trim line end
preg_replace( '/'s's*$/m', '',
// remove HTML comments (not containing IE conditional comments)
preg_replace_callback(
'/<!--[^ShowThitComment](['s'S]*?)-->/',
function( $m ) {
return ( 0 === strpos($m[1], '[' ) || false !== strpos( $m[1], '<![' ) ) ? $m[0] : '';
},
// start point
$buffer
)
)
)
)
)
;
}
thanks in advance
使用Gulp可以更有效地实现您想要的效果。查看gulp-clean-css来最小化css, gulp-uglify来最小化js。
要开始使用gulp,这里是一个好地方。