2011-07-23 8 views
1

可能性の重複:私は、HTML内のすべての改行とスペースを取り除くと、1行にそれを置く意味
How to minify php page html output?PHPで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を圧縮するが表示されますか?

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

既存のライブラリを使用する[html minifier](http://code.google.com/p/htmlcompressor/) – Ibu

+0

通常、文字セットに不一致があることを意味します。たとえば、ASCIIとその他のUTF -8。 –

+2

コンテンツをgzipするだけでさらに多くの成果を上げることができます。 HTMLの最小化は、大量のユーザーベースを持つサイトでのみ有効です。 – Gordon

答えて

4

そのシンボルが、それは外国の文字だ意味し、あなたの特定のフォントは、それが使用する必要があるものを文字認識していません:

4

\ sがすなわちこれが正しい、角括弧内に表示されません。 (Apacheサーバが圧縮を処理するように設定されている場合。)http://www.php.net/manual/en/ref.outcontrol.phphttp://php.net/manual/en/function.gzcompress.php どれよりそのその後、おそらくあなたは、より多くのオーバーヘッドが発生しますでしょう:あなたはmultibyte-safe string functionsと出力バッファへのUTF-8 encodingdecoding

+0

素敵でシンプルな、ありがとう。それはコードを壊さない唯一のものです。追加する1つの提案:$ html = str_replace( '><', '><、$ html); – Codebeat

1

ルックになっているはずです利得。

したがって、出力を文字列として取得するには、ob_bufferを使用します。文字列を圧縮して送り出します。

関連する問題