2

不要なスペース、改行、タブ、およびコメントを削除して、ページの HTML コードを縮小する機能に取り組んでいます。ただし、で始まるタグを保持したい

 "<!-- google_ad_section... -->"

私のページのどのセクションを強調するかを Google に伝えます。

コードをトリミングするための現在のコード スニペットは、この素晴らしいサイトの別の場所で見つけたものです。2番目のパラメーターの最初の部分がすべてのコメントをクリアすることを理解するために、パラメーターのエンコードと同じくらい理解しています..しかし、「google_ad_section」文字列を含むすべてのタグを保持するにはどうすればよいですか?

function sanitize_output2($buffer){
return preg_replace(
array(
    '/ {2,}/',
    '/<!--.*?-->|\t|(?:\r?\n[ \t]*)+/s'
),
array(
    ' ',
    ''
),
$buffer
);
}
4

2 に答える 2

2

この解決策はどうですか:

  • DOMDocumentを介して HTML を実行します
  • オプションpreserveWhiteSpaceを使用して、false余分な空白をすべて削除します
  • 必要なコメントとは異なるすべてのコメントをフィルタリングする

たぶん、次のようになります。

$html = '<html>[…]</html>';

$doc = new DOMDocument;
$doc->preserveWhiteSpace = false; 
$doc->loadHtml($html);

$xpath = new DOMXPath($doc);
$comments = $xpath->query('//comment()');
foreach ($comments as $comment) {
    if (!preg_match('/^google_ad_section /', $comment->nodeValue)) {
        $comment->parentNode->removeChild($comment);
    }
}

$html = $doc->saveHTML();

私はこれを暗記し、テストしませんでした。そのため、100% 正確ではない可能性があります。

于 2013-02-04T17:17:58.763 に答える
1

strip_tags() 関数を確認してください。特に 2 番目のパラメーター。

strip_tags($html_string,$allowable_tags);

http://php.net/manual/en/function.strip-tags.php

また、trim() 関数も同様です。その 2 番目のパラメーターを再度チェックアウトします。

 trim($html_string,$charlist)

http://www.php.net/manual/en/function.trim.php

出力を圧縮する Apache の mod_deflate も参照してください。

http://httpd.apache.org/docs/2.2/mod/mod_deflate.html

ただし、これは HTML ファイルに対してのみ機能します。PHP 出力を圧縮するには、サイト全体の php.ini ファイルまたは実行時に zlib.output_compression = On で作業する必要があります。

ini_set("zlib.output_compression", "On");

http://php.net/manual/en/zlib.configuration.php

于 2013-02-04T17:25:53.883 に答える