我的意思是删除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?
答案 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.php 和http://php.net/manual/en/function.gzcompress.php(如果您的apache服务器配置为处理压缩。) 不管怎样,这可能会导致更多的开销,然后你会获得。
因此,使用ob_buffer将输出作为字符串。压缩字符串,然后将其发送出去。