이 문제는 웹 서버가 잘못 구성된 사이트에서 발생하며 클라이언트가 대응할 수 있는지 여부에 관계없이 압축 된 페이지를 다시 보냅니다. 클라이언트는 Accept-Encoding
헤더 (file_get_contents가 보내지 않는 헤더)를 표시합니다. 이것은 일반적으로 웹 브라우저에서 작동합니다. 기본값으로 압축 된 페이지를 요청하거나 요청하지 않은 경우에도 gzip으로 응답합니다. 하나.
(덧붙여 말하자면, 유닉스 계열 시스템에서는 파일에 저장하고 file을 실행하여 gzipped을 쉽게 확인할 수 있습니다. 또는 결과의 처음 몇 바이트 만 봅니다 사용자 - gzip 데이터는 1F 8B로 시작합니다.)
수동으로 내용을 압축 해제하는 대신 PHP의 컬 라이브러리를 직접 사용합니다. 당신은 콘텐츠 gzip으로 압축을 요청하는 것을 구성 할 수 있습니다, 그리고 당신이 할 경우, 그것은 투명하게 당신을위한 결과의 압축을 해제합니다 : 웹 서버가 제대로 얻는 것처럼 수동으로 디코딩 결과보다이 더 미래 지향적이다
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://actualidad.rt.com/actualidad');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_ENCODING , 'gzip');
$content = curl_exec ($ch);
gzip을 처리 할 수없는 클라이언트에게 일반 텍스트를 다시 보내도록 구성된 경우이 코드는 여전히 압축 된 버전을 요청하고 디코딩합니다.
Google에서이 URL을 발견했습니다. –
그게 도움이 될 수 있습니다. (http://www.oooff.com/php-scripts/basic-php-scraped-data-parsing/basic-php-data-parsing.php) 페이지는 인코딩 된 또는 워드 프레스 관련 구문 분석에 대해 많이 알지 못합니다 ... –
기호가 바이너리의 이미지 일 수 있습니다. –