简单的白色 Space HTML PHP 的缩小

Simple White Space HTML Minification for PHP

我正在尝试寻找一个简单的缩小示例来执行以下操作:

  1. 删除每行左边的所有空格
  2. 删除所有多个换行符
  3. 保留所有其他换行符。

所以这个:

<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);
}

演示:https://ideone.com/dG71fL