Beim Abrufen von komprimierten Webseiten mit cURL werden möglicherweise die Rohdaten anstelle des dekodierten Inhalts ausgegeben. Dies kann mit den folgenden Methoden gelöst werden:
Der „Auto-Kodierungs“-Modus von cURL ermöglicht es dem Server, die unterstützten Kodierungsmethoden zu ermitteln und die Antwort automatisch zu dekomprimieren. Um diesen Modus zu aktivieren, verwenden Sie den folgenden Befehl:
<code class="php">curl_setopt($ch, CURLOPT_ENCODING, '');</code>
Indem Sie die Option CURLOPT_ENCODING auf eine leere Zeichenfolge setzen, verwendet cURL den „Auto“-Modus.
Alternativ können Sie die Anforderung zur Verwendung der GZIP-Komprimierung erzwingen, indem Sie die Option CURLOPT_ENCODING auf „gzip“ setzen:
<code class="php">curl_setopt($ch, CURLOPT_ENCODING, 'gzip');</code>
Dadurch wird die GZIP-Komprimierung explizit vom Server angefordert.
Wenn Sie die abgerufenen Daten manuell dekomprimieren müssen, können Sie die Funktion gzdecode() verwenden:
<code class="php">$decompressedContent = gzdecode($gzippedContent);</code>
Diese Funktion dekodiert GZIP-komprimierte Daten und gibt den unkomprimierten Inhalt zurück.
Um eine zuverlässige Dekomprimierung zu gewährleisten, wird empfohlen, die Ausgabepufferung von PHP zu deaktivieren, bevor die Curl-Anfrage ausgeführt wird. Dies verhindert jegliche Beeinträchtigung der Verarbeitung der Antwort durch cURL.
<code class="php">ob_end_clean();</code>
Das obige ist der detaillierte Inhalt vonWie dekomprimiere ich komprimierte Webseiten, die über cURL in PHP abgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!