Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menyelesaikan masalah php gzip css bercelaru

Bagaimana untuk menyelesaikan masalah php gzip css bercelaru

藏色散人
Lepaskan: 2023-03-12 22:52:02
asal
2285 orang telah melayarinya

Penyelesaian untuk php gzip css kod bercelaru: 1. Gunakan perpustakaan zlib terbina dalam 2. Gunakan CURL dan bukannya "file_get_contents" 3. Gunakan fungsi penyahmampatan gzip untuk menyelesaikan masalah kod bercelaru.

Bagaimana untuk menyelesaikan masalah php gzip css bercelaru

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3.

Bagaimana untuk menyelesaikan masalah php gzip css bercelaru?

Tiga penyelesaian untuk php file_get_contents meraih halaman web Gzip bercelaru

Menggunakan fungsi file_get_contents() untuk merangkak halaman web akan menyebabkan aksara bercelaru. Terdapat dua sebab yang akan menyebabkan aksara bercelaru Salah satunya ialah masalah pengekodan, dan satu lagi ialah Gzip didayakan pada halaman sasaran Berikut ialah cara untuk mengelakkan aksara bercelaru jika fungsi Gzip didayakan

<.>

Kandungan yang diterima boleh dikodkan ($content=iconv("GBK", "UTF-8//IGNORE", $content);). pada. Bagaimana untuk menilai? Pengepala yang diperoleh mengandungi Pengekodan Kandungan: gzip yang menunjukkan bahawa kandungan itu adalah GZIP dimampatkan. Gunakan FireBug untuk menyemak sama ada gzip didayakan pada halaman. Berikut ialah maklumat pengepala blog saya yang dilihat menggunakan pepijat api Gzip dihidupkan.

Kodnya adalah seperti berikut:

Minta maklumat pengepala maklumat pengepala asal

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4%BD%95%E9%A1%B9%E7%9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE%80%E5%8D%95%20site%3Awww.nowamagic.net; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401
Host www.nowamagic.net
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Salin selepas log masuk
Berikut ialah beberapa penyelesaian:

1. dalam pustaka zlib

Jika pelayan telah memasang perpustakaan zlib, anda boleh menyelesaikan masalah kod bercelaru dengan mudah dengan menggunakan kod berikut.

Kodnya adalah seperti berikut:

$data = file_get_contents("compress.zlib://".$url);
Salin selepas log masuk
2 Gunakan CURL dan bukannya file_get_contents

Kodnya adalah seperti berikut:

function curl_get($url, $gzip=false){
 $curl = curl_init($url);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
 if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
 $content = curl_exec($curl);
 curl_close($curl);
 return $content;
}
Salin selepas log masuk
3. . Gunakan fungsi penyahmampatan gzip

Kodnya adalah seperti berikut:

function gzdecode($data) {
  $len = strlen($data);
  if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
    return null;  // Not GZIP format (See RFC 1952)
  }
  $method = ord(substr($data,2,1));  // Compression method
  $flags  = ord(substr($data,3,1));  // Flags
  if ($flags & 31 != $flags) {
    // Reserved bits are set -- NOT ALLOWED by RFC 1952
    return null;
  }
  // NOTE: $mtime may be negative (PHP integer limitations)
  $mtime = unpack("V", substr($data,4,4));
  $mtime = $mtime[1];
  $xfl   = substr($data,8,1);
  $os    = substr($data,8,1);
  $headerlen = 10;
  $extralen  = 0;
  $extra     = "";
  if ($flags & 4) {
    // 2-byte length prefixed EXTRA data in header
    if ($len - $headerlen - 2 < 8) {
      return false;    // Invalid format
    }
    $extralen = unpack("v",substr($data,8,2));
    $extralen = $extralen[1];
    if ($len - $headerlen - 2 - $extralen < 8) {
      return false;    // Invalid format
    }
    $extra = substr($data,10,$extralen);
    $headerlen += 2 + $extralen;
  }
  $filenamelen = 0;
  $filename = "";
  if ($flags & 8) {
    // C-style string file NAME data in header
    if ($len - $headerlen - 1 < 8) {
      return false;    // Invalid format
    }
    $filenamelen = strpos(substr($data,8+$extralen),chr(0));
    if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
      return false;    // Invalid format
    }
    $filename = substr($data,$headerlen,$filenamelen);
    $headerlen += $filenamelen + 1;
  }
  $commentlen = 0;
  $comment = "";
  if ($flags & 16) {
    // C-style string COMMENT data in header
    if ($len - $headerlen - 1 < 8) {
      return false;    // Invalid format
    }
    $commentlen = strpos(substr($data,8+$extralen+$filenamelen),chr(0));
    if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
      return false;    // Invalid header format
    }
    $comment = substr($data,$headerlen,$commentlen);
    $headerlen += $commentlen + 1;
  }
  $headercrc = "";
  if ($flags & 1) {
    // 2-bytes (lowest order) of CRC32 on header present
    if ($len - $headerlen - 2 < 8) {
      return false;    // Invalid format
    }
    $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
    $headercrc = unpack("v", substr($data,$headerlen,2));
    $headercrc = $headercrc[1];
    if ($headercrc != $calccrc) {
      return false;    // Bad header CRC
    }
    $headerlen += 2;
  }
  // GZIP FOOTER - These be negative due to PHP&#39;s limitations
  $datacrc = unpack("V",substr($data,-8,4));
  $datacrc = $datacrc[1];
  $isize = unpack("V",substr($data,-4));
  $isize = $isize[1];
  // Perform the decompression:
  $bodylen = $len-$headerlen-8;
  if ($bodylen < 1) {
    // This should never happen - IMPLEMENTATION BUG!
    return null;
  }
  $body = substr($data,$headerlen,$bodylen);
  $data = "";
  if ($bodylen > 0) {
    switch ($method) {
      case 8:
        // Currently the only supported compression method:
        $data = gzinflate($body);
        break;
      default:
        // Unknown compression method
        return false;
    }
  } else {
    // I&#39;m not sure if zero-byte body content is allowed.
    // Allow it for now...  Do nothing...
  }
  // Verifiy decompressed size and CRC32:
  // NOTE: This may fail with large data sizes depending on how
  //       PHP&#39;s integer limitations affect strlen() since $isize
  //       may be negative for large sizes.
  if ($isize != strlen($data) || crc32($data) != $datacrc) {
    // Bad format!  Length or CRC doesn&#39;t match!
    return false;
  }
  return $data;
}
Salin selepas log masuk
Gunakan:

Kodnya adalah seperti berikut:

$html=file_get_contents(&#39;https://www.jb51.net/&#39;);
$html=gzdecode($html);
Salin selepas log masuk
I akan memperkenalkan tiga kaedah ini, yang sepatutnya dapat menyelesaikan kebanyakan masalah yang disebabkan oleh gzip Terdapat masalah dengan merebut aksara yang kacau.

Pembelajaran yang disyorkan: "

Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah php gzip css bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan