2

我正在开发一个功能,通过去除不必要的空格、换行符和制表符以及其中的注释来缩小我的页面的 HTML 代码。但是,我想保留以

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

因为他们告诉谷歌我页面的哪些部分要强调。

我当前修剪代码的代码片段是这个,在这个伟大网站的另一个地方找到。我对参数编码的理解与第二个参数的第一部分清除了所有注释一样多。但是如何保留所有包含“google_ad_section”字符串的标签?

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

2 回答 2

2

这个解决方案怎么样:

也许它看起来像这样:

$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() 函数;尤其是第二个参数。

strip_tags($html_string,$allowable_tags);

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

还有 trim() 函数;再次检查第二个参数。

 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 回答