dandandan
Мой дом здесь!
- Регистрация
- 7 Авг 2008
- Сообщения
- 1.036
- Реакции
- 293
- Автор темы
- #1
Текстовые данные html страницы вывожу так
Используемые функции сжатия
В результате яндекс ругается на Передано неверное количество данных. В следствии уменьшилось количество страниц в поиске.
Где что подрихтовать?
Код:
eval('?><? $textik= \''.$textik. '\';');
echo miscGzHandler(htmlCompress($textik));
Код:
function htmlCompress($html){
//return $html;
preg_match_all('!(<(?:code|pre|textarea|script)[^>]+>.*?</(?:code|pre|textarea|script)>)!si',$html,$pre);
$html = preg_replace('!<(?:code|pre|textarea|script)[^>]+>.*?</(?:code|pre|textarea|script)>!si', '#pre#', $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;
}
//************************
function miscGzHandler($buf) {
$zipRatio = 1; // 0 <= zipRatio <= 9
$zipDebug = 0; // 0 <= zipDebug <= 2
if(empty($buf) || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
header('Content-length: ' . strlen($buf));
return $buf;
}
$enc_ar = explode(',', $_SERVER['HTTP_ACCEPT_ENCODING']);
$mayZip = false;
$encoding = '';
foreach($enc_ar as $enc) {
$enc = trim($enc);
if('gzip' === $enc || 'x-gzip' === $enc) {
$mayZip = true;
$encoding = $enc;
break;
}
}
if(!$mayZip) {
header('Content-length: ' . strlen($buf));
return $buf;
}
$bufZiped = gzcompress($buf, $zipRatio);
if($zipDebug) {
$bufLen = strlen($buf);
$bufZipedLen = strlen($bufZiped);
$buf .= (2 == $zipDebug) ? "\n\n<!" . "--\n" : "\n<br><pre>\n";
$buf .= "Размер оригинала HTML : " . $bufLen . " bytes\n";
$buf .= "Компрессир. размер: " . $bufZipedLen . " bytes\n";
$buf .= "Степень компрессии: " . $zipRatio . "\n";
$buf .= (2 == $zipDebug) ? '--' . ">\n" : "</pre>\n";
$bufZiped = gzcompress($buf, $zipRatio);
}
$bufZiped = pack('cccccccc', 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00)
. substr($bufZiped, 0, -4)
. pack('V', crc32($buf))
. pack('V', strlen($buf));
header('Content-encoding: ' . $encoding);
header('Content-length: ' . strlen($bufZiped));
return $bufZiped;
}
Где что подрихтовать?