我正在构建一个脚本,通过读取给定页面的内容并在其中查找预定义的字符串来检查网站是否启动(如果网站关闭,则不会找到字符串)。
我正在阅读带有函数的页面内容 file_get_contents,问题是在极少数情况下收到的内容只是胡言乱语。我试图用 fopen 甚至卷曲做同样的事情。对所有功能都胡言乱语。一开始我认为这是因为编码问题(页面是 UTF8),我试图使用所有参数,但似乎不是这样。
当我决定在另一台服务器上测试代码时,整个事情变得更加奇怪。它工作得很好!在我的开发站上返回乱码的相同页面在我的其他 Web 服务器上运行时返回可读文本。
两个工作站都安装了最新的 WAMP 作为开发环境,您对可能导致这种情况的原因有什么建议吗?
正如我所说,它可能是一个 gzip 输出,使用此函数并通过它传递"胡言乱语"。 如果不是问题,请告诉我,请删除此答案
$site = file_get_contents('http://example.com');
echo gzdecoder($site);
function gzdecoder($d){
$f=ord(substr($d,3,1));
$h=10;$e=0;
if($f&4){
$e=unpack('v',substr($d,10,2));
$e=$e[1];$h+=2+$e;
}
if($f&8){
$h=strpos($d,chr(0),$h)+1;
}
if($f&16){
$h=strpos($d,chr(0),$h)+1;
}
if($f&2){
$h+=2;
}
$u = gzinflate(substr($d,$h));
if($u===FALSE){
$u=$d;
}
return $u;
}
编辑:
不确定,奇怪的设置。 我之前在某些网站上遇到过这个问题
SetEnv no-gzip dont-vary
.htaccess 文件中将其关闭