> 백엔드 개발 > PHP 튜토리얼 > PHP file_get_contents에서 원격 파일을 읽을 때 발생하는 왜곡된 문제는 gzip 압축으로 인해 발생합니다.

PHP file_get_contents에서 원격 파일을 읽을 때 발생하는 왜곡된 문제는 gzip 압축으로 인해 발생합니다.

WBOY
풀어 주다: 2016-07-29 09:06:53
원래의
1176명이 탐색했습니다.

어제 예전에 만들었던 China Weather Network의 날씨 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>));
로그인 후 복사

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>
로그인 후 복사

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

gzip 인코딩 형식 채택

file_get_contents 솔루션:

<span>file_get_contents</span>("compress.zlib://".<span>$url</span>);
로그인 후 복사

위 코드는 페이지가 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>
로그인 후 복사

위 내용은 내용을 포함하여 gzip 압축으로 인해 발생하는 원격 파일을 읽는 PHP file_get_contents의 왜곡된 문제를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿