Table des matières
curl解决:
file_get_contents解决:
Maison développement back-end tutoriel php php file_get_contents读取远程文件的乱码问题gzip压缩引起的

php file_get_contents读取远程文件的乱码问题gzip压缩引起的

Jul 29, 2016 am 09:06 AM
curl file get gzip

    昨天发现以前做的调用 中国天气网的天气api,保存到本地发现有部分城市是乱码。

一直找不到原因。因为在浏览器看 完全正常。 如。读取 银川市的当天天气  http://m.weather.com.cn/data/101170101.html 

php file_get_contents读取远程文件的乱码问题gzip压缩引起的

在浏览器上看它的json数据 完全正常。编码也正常。但用file_get_contents 读取在浏览器输出就是乱码。

<span>$url</span> = 'http://m.weather.com.cn/data/101170101.html'<span>;
</span><span>echo</span> '<pre class="brush:php;toolbar:false">'<span>;
</span><span>print_r</span>(<span>file_get_contents</span>(<span>$url</span>));
Copier après la connexion

php file_get_contents读取远程文件的乱码问题gzip压缩引起的

在网上忙活一阵才发现 原因 中国天气网开启了gzip压缩 。找到了解决方法   来自 http://www.php10086.com/2012/03/516.html

PHP的file_get_contents获取远程页面内容,如果是gzip编码过的,返回的字符串就是编码后的乱码,如何解决gzip问题方法有两种:

curl解决:

php file_get_contents读取远程文件的乱码问题gzip压缩引起的

<span>function</span> curl_get(<span>$url</span>, <span>$gzip</span>=<span>false</span><span>){
        </span><span>$curl</span> = curl_init(<span>$url</span><span>);
        curl_setopt(</span><span>$curl</span>, CURLOPT_RETURNTRANSFER, 1<span>);
        curl_setopt(</span><span>$curl</span>, CURLOPT_CONNECTTIMEOUT, 10<span>);
        </span><span>if</span>(<span>$gzip</span>) curl_setopt(<span>$curl</span>, CURLOPT_ENCODING, "gzip"); <span>//</span><span> 关键在这里</span><span>$content</span> = curl_exec(<span>$curl</span><span>);
        curl_close(</span><span>$curl</span><span>);
        </span><span>return</span><span>$content</span><span>;
}</span>
Copier après la connexion

php file_get_contents读取远程文件的乱码问题gzip压缩引起的

采用gzip编码格式

file_get_contents解决:

<span>file_get_contents</span>("compress.zlib://".<span>$url</span>);
Copier après la connexion

无论页面是否经过gzip压缩,上述代码都可以正常工作!

PHP 4.3.0以后版本支持,还可以用于fopen之类的函数~!

解决方法:

<span>$url</span> = 'http://m.weather.com.cn/data/101170101.html'<span>;

</span><span>echo</span> '<pre class="brush:php;toolbar:false">'<span>; 

</span><span>print_r</span>(<span>file_get_contents</span>("compress.zlib://".<span>$url</span>));<span>//</span><span>打开gzip压缩过的页面。 路径前不加compress.zlib:// 打开会有乱码。  </span>
Copier après la connexion

以上就介绍了php file_get_contents读取远程文件的乱码问题gzip压缩引起的,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réaliser la conversion mutuelle entre les requêtes CURL et python en python Comment réaliser la conversion mutuelle entre les requêtes CURL et python en python May 03, 2023 pm 12:49 PM

curl et Pythonrequests sont des outils puissants pour envoyer des requêtes HTTP. Alors que curl est un outil de ligne de commande qui vous permet d'envoyer des requêtes directement depuis le terminal, la bibliothèque de requêtes de Python fournit un moyen plus programmatique d'envoyer des requêtes à partir du code Python. La syntaxe de base pour convertir curl en commande Pythonrequestscurl est la suivante : curl[OPTIONS]URL Lors de la conversion de la commande curl en requête Python, nous devons convertir les options et l'URL en code Python. Voici un exemple de commande curlPOST : curl-XPOST https://example.com/api

Tutoriel sur la mise à jour de la version curl sous Linux ! Tutoriel sur la mise à jour de la version curl sous Linux ! Mar 07, 2024 am 08:30 AM

Pour mettre à jour la version curl sous Linux, vous pouvez suivre les étapes ci-dessous : Vérifiez la version actuelle de curl : Tout d'abord, vous devez déterminer la version de curl installée dans le système actuel. Ouvrez un terminal et exécutez la commande suivante : curl --version Cette commande affichera les informations sur la version actuelle de curl. Confirmer la version curl disponible : Avant de mettre à jour curl, vous devez confirmer la dernière version disponible. Vous pouvez visiter le site officiel de curl (curl.haxx.se) ou des sources de logiciels associées pour trouver la dernière version de curl. Téléchargez le code source de curl : à l'aide de curl ou d'un navigateur, téléchargez le fichier de code source pour la version curl de votre choix (généralement .tar.gz ou .tar.bz2).

Poésie aléatoire d'application native Hongmeng Poésie aléatoire d'application native Hongmeng Feb 19, 2024 pm 01:36 PM

Pour en savoir plus sur l'open source, veuillez visiter : 51CTO Hongmeng Developer Community https://ost.51cto.com Environnement d'exploitation DAYU200 : 4.0.10.16SDK : 4.0.10.15IDE : 4.0.600 1. Pour créer une application, cliquez sur Fichier- >nouveauFichier->CréerProgect. Sélectionnez le modèle : [OpenHarmony] EmptyAbility : indiquez le nom du projet, shici, le nom du package d'application com.nut.shici et l'emplacement de stockage de l'application XXX (pas de chinois, de caractères spéciaux ou d'espaces). CompileSDK10, modèle : étape. Appareil

Utilisez la fonction File.length() de Java pour obtenir la taille du fichier Utilisez la fonction File.length() de Java pour obtenir la taille du fichier Jul 24, 2023 am 08:36 AM

Utilisez la fonction File.length() de Java pour obtenir la taille d'un fichier. La taille du fichier est une exigence très courante lors des opérations sur les fichiers. Java fournit un moyen très pratique d'obtenir la taille d'un fichier, c'est-à-dire en utilisant la longueur (. ) méthode de la classe File . Cet article explique comment utiliser cette méthode pour obtenir la taille d'un fichier et donne des exemples de code correspondants. Tout d’abord, nous devons créer un objet File pour représenter le fichier dont nous voulons obtenir la taille. Voici comment créer un objet File : Filef

Comment convertir un blob php en fichier Comment convertir un blob php en fichier Mar 16, 2023 am 10:47 AM

Comment convertir un blob php en fichier : 1. Créez un exemple de fichier php ; 2. Via "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } » peut être utilisée pour convertir un Blob en fichier.

Sortie de PHP8.1 : introduction de curl pour le traitement simultané de plusieurs requêtes Sortie de PHP8.1 : introduction de curl pour le traitement simultané de plusieurs requêtes Jul 08, 2023 pm 09:13 PM

PHP8.1 publié : présentation de curl pour le traitement simultané de plusieurs requêtes. Récemment, PHP a officiellement publié la dernière version de PHP8.1, qui a introduit une fonctionnalité importante : curl pour le traitement simultané de plusieurs requêtes. Cette nouvelle fonctionnalité offre aux développeurs un moyen plus efficace et plus flexible de gérer plusieurs requêtes HTTP, améliorant ainsi considérablement les performances et l'expérience utilisateur. Dans les versions précédentes, la gestion de plusieurs requêtes nécessitait souvent de créer plusieurs ressources curl et d'utiliser des boucles pour envoyer et recevoir des données respectivement. Bien que cette méthode puisse atteindre l'objectif

Du début à la fin : Comment utiliser l'extension php cURL pour effectuer des requêtes HTTP Du début à la fin : Comment utiliser l'extension php cURL pour effectuer des requêtes HTTP Jul 29, 2023 pm 05:07 PM

Du début à la fin : Comment utiliser l'extension php cURL pour les requêtes HTTP Introduction : En développement web, il est souvent nécessaire de communiquer avec des API tierces ou d'autres serveurs distants. Utiliser cURL pour effectuer des requêtes HTTP est un moyen courant et puissant. Cet article expliquera comment utiliser PHP pour étendre cURL afin d'effectuer des requêtes HTTP et fournira quelques exemples de code pratiques. 1. Préparation Tout d'abord, assurez-vous que l'extension cURL est installée sur php. Vous pouvez exécuter php-m|grepcurl sur la ligne de commande pour vérifier

Renommez les fichiers à l'aide de la fonction File.renameTo() de Java Renommez les fichiers à l'aide de la fonction File.renameTo() de Java Jul 25, 2023 pm 03:45 PM

Utilisez la fonction File.renameTo() de Java pour renommer des fichiers. En programmation Java, nous avons souvent besoin de renommer des fichiers. Java fournit la classe File pour gérer les opérations sur les fichiers, et sa fonction renameTo() peut facilement renommer les fichiers. Cet article explique comment utiliser la fonction File.renameTo() de Java pour renommer des fichiers et fournit des exemples de code correspondants. La fonction File.renameTo() est une méthode de la classe File.

See all articles