如何在php中压缩html输出?

时间:2011-07-23 21:49:12

标签: php html compression

  

可能重复:
  How to minify php page html output?

我的意思是删除html中的所有换行符和空格并将其放在一行上。

我试过这个功能

public static function htmlCompress($html)
{
    preg_match_all('!(<(?:code|pre|script).*>[^<]+</(?:code|pre|script)>)!',$html,$pre);
    $html = preg_replace('!<(?:code|pre).*>[^<]+</(?:code|pre)>!', '#pre#', $html);
    $html = preg_replace('#<!–[^\[].+–>#', '', $html);
    $html = preg_replace('/[\r\n\t]+/', ' ', $html);
    $html = preg_replace('/>[\s]+</', '><', $html);
    $html = preg_replace('/[\s]+/', ' ', $html);
    if (!empty($pre[0])) {
        foreach ($pre[0] as $tag) {
            $html = preg_replace('!#pre#!', $tag, $html,1);
        }
    }
    return $html;
}

但由于此字符串

,有时会出现像“ ”这样的符号
$html = preg_replace('/[\s]+/', ' ', $html);

为什么会出现这个符号以及如何压缩html?

3 个答案:

答案 0 :(得分:4)

\ s不应出现在方括号中,即这是正确的:

$html = preg_replace('/\s+/', ' ', $html);

答案 1 :(得分:4)

该符号表示它是外来字符,您的特定字体不知道需要使用哪个字符。您应该查看multibyte-safe string functions和UTF-8 encoding以及decoding

答案 2 :(得分:1)

查看输出缓冲:http://www.php.net/manual/en/ref.outcontrol.phphttp://php.net/manual/en/function.gzcompress.php(如果您的apache服务器配置为处理压缩。) 不管怎样,这可能会导致更多的开销,然后你会获得。

因此,使用ob_buffer将输出作为字符串。压缩字符串,然后将其发送出去。