PHP文件获取内容和字符串编码(PHP File Get Contents & String Enc

2019-10-18 09:39发布

检索到的CSS文件的内容:( http://gizmodo.com/assets/stylesheets/app-ecbc6044c59319aab4c2a1e31380ef56.css )

检测到的编码与mb_detect_encoding ......说UTF-8。

在浏览器中查看的页面,看起来很好(读取),并宣布@charset "UTF-8";

试图输出字符串,得到了垃圾。 试图将其保存到一个文件中,有垃圾。

试图把编码转换为ASCII,ISO-8859-1,和HTML实体。 没运气。

这里任何想法如何确定为什么这个字符串就是垃圾,以及如何解决它?

Answer 1:

$url = 'http://gizmodo.com/assets/stylesheets/app-ecbc6044c59319aab4c2a1e31380ef56.css';

$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
$data = curl_exec($ch);
curl_close($ch);
echo $data;

重要线路

curl_setopt($ch,CURLOPT_ENCODING , "gzip");


Answer 2:

Content-Encoding你想抓取网页的是gzip 。 你需要解压缩使用它之前。

我刚刚试过以下,它工作得很好:

echo gzdecode(file_get_contents($your_url));


文章来源: PHP File Get Contents & String Encoding