简单的白色 Space HTML PHP 的缩小
Simple White Space HTML Minification for PHP
我正在尝试寻找一个简单的缩小示例来执行以下操作:
- 删除每行左边的所有空格
- 删除所有多个换行符
- 保留所有其他换行符。
所以这个:
<div class="container">
<div class="row">
<div class="col-sm-12">
//content here
</div>
</div>
</div>
会变成这样:
<div class="container">
<div class="row">
<div class="col-sm-12">
//content here
</div>
</div>
</div>
所有内容各占一行,没有额外的新行。
我发现了一堆更极端的缩小器,例如:
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\1'
);
但这对我的需要来说太过分了。
简单的东西是理想的。
用序列的第一个 space 字符替换每个白色 space 字符序列适用于您的示例,但我不知道更复杂的 html 代码。
$s = preg_replace("/(\s)\s+/", "", $s);
explode
每行成一个数组。使用 trim
删除空格。然后使用 array_filter
删除空行。最后将剩余的元素与 implode
.
连接在一起
function minify($html) {
$lines = explode(PHP_EOL, $html);
array_walk($lines, function(&$line) {
$line = trim($line);
});
$lines = array_filter($lines, function($line) {
return $line !== '';
});
return implode(PHP_EOL, $lines);
}
我正在尝试寻找一个简单的缩小示例来执行以下操作:
- 删除每行左边的所有空格
- 删除所有多个换行符
- 保留所有其他换行符。
所以这个:
<div class="container">
<div class="row">
<div class="col-sm-12">
//content here
</div>
</div>
</div>
会变成这样:
<div class="container">
<div class="row">
<div class="col-sm-12">
//content here
</div>
</div>
</div>
所有内容各占一行,没有额外的新行。
我发现了一堆更极端的缩小器,例如:
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\1'
);
但这对我的需要来说太过分了。
简单的东西是理想的。
用序列的第一个 space 字符替换每个白色 space 字符序列适用于您的示例,但我不知道更复杂的 html 代码。
$s = preg_replace("/(\s)\s+/", "", $s);
explode
每行成一个数组。使用 trim
删除空格。然后使用 array_filter
删除空行。最后将剩余的元素与 implode
.
function minify($html) {
$lines = explode(PHP_EOL, $html);
array_walk($lines, function(&$line) {
$line = trim($line);
});
$lines = array_filter($lines, function($line) {
return $line !== '';
});
return implode(PHP_EOL, $lines);
}