【问题标题】:Simple White Space HTML Minification for PHPPHP 的简单空白 HTML 缩小
【发布时间】:2015-09-18 05:42:59
【问题描述】:

我正在尝试找到一个简单的缩小示例,它将执行以下操作:

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

但这对于我的需要来说太过分了。

简单的东西会是理想的。

【问题讨论】:

    标签: php html minify


    【解决方案1】:

    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

    【讨论】:

    • 太棒了!非常感谢!
    【解决方案2】:

    用序列的第一个空格字符替换每个空格字符序列适用于您的示例,但我不知道更复杂的 html 代码。

    $s = preg_replace("/(\s)\s+/", "$1", $s);
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2012-01-30
      • 2011-03-06
      • 2015-02-11
      • 2017-10-29
      • 2019-04-16
      相关资源
      最近更新 更多