Php 缩小HTML输出,但保留某些标记

Php 缩小HTML输出,但保留某些标记,php,string,escaping,Php,String,Escaping,我正在开发一个函数,通过去除不必要的空格、换行符和制表符以及其中的注释来缩小页面的HTML代码。 但是,我想保留从 "<!-- google_ad_section... -->" “” 当他们告诉谷歌我的页面的哪些部分需要强调时 我目前用来修剪代码的代码片段是这个,在这个伟大的网站的另一个地方可以找到。我和参数编码一样理解第二个参数的第一部分会清除所有注释。。但是我如何保存所有包含“google_ad_section”字符串的标签呢 function sanitize_outp

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

 "<!-- google_ad_section... -->"
“”
当他们告诉谷歌我的页面的哪些部分需要强调时

我目前用来修剪代码的代码片段是这个,在这个伟大的网站的另一个地方可以找到。我和参数编码一样理解第二个参数的第一部分会清除所有注释。。但是我如何保存所有包含“google_ad_section”字符串的标签呢

function sanitize_output2($buffer){
返回预更换(
排列(
'/ {2,}/',
“/|\t |(?:\r?\n[\t]*)+/s”
),
排列(
' ',
''
),
$buffer
);
}

这个解决方案怎么样:

  • 运行您的HTML
  • 使用带有
    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();
$html='[…]';
$doc=新文档;
$doc->preserveWhiteSpace=false;
$doc->loadHtml($html);
$xpath=新的DOMXPath($doc);
$comments=$xpath->query('//comment()');
foreach($comments作为$comment){
如果(!preg_match(“/^google_ad_section/”,$comment->nodeValue)){
$comment->parentNode->removeChild($comment);
}
}
$html=$doc->saveHTML();

这是我背下来写的,没有测试。因此,它可能不是100%准确。

一定要检查strip_tags()函数;特别是第二个参数

strip_tags($html_string,$allowable_tags);
 trim($html_string,$charlist)

以及trim()函数;再次签出第二个参数

strip_tags($html_string,$allowable_tags);
 trim($html_string,$charlist)

您可能还想看看Apache的mod_deflate,它将压缩输出

但这只适用于HTML文件。要压缩PHP输出,您需要在整个站点的PHP.ini文件中或在运行时使用zlib.output_compression=On

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

它通常被称为“缩小”而不是“清理”。感谢您的提示,我更改了标题。谢谢,但根据文档,我不能将其用于此特定目的,因为标记的格式类似于注释,并且还包含空格,strip_tags()函数会“杀死”这两个空格。