file_get_contents无法打开中文网站

时间:2014-03-14 09:12:50

标签: php html dom curl character-encoding

我正在编写一个脚本来从中文网站中提取HTML源代码。 我尝试 file_get_contents 来阅读网络文件

$html = file_get_contents($url);
echo $html; 

以下是获得的结果,

enter image description here

我在目标网站中找到了内容类型

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

所以我尝试将结果转换为utf-8,

$html = file_get_contents('http://newhouse.bt.soufun.com/house/web/Search_Result.php');
$html = mb_convert_encoding($html,'utf-8','GB2312'); 
echo $html;

结果现在显示,

enter image description here

使用上述选项,我无法获得正确的页面源,这无法进一步解析。我需要解析HTML并使用DOM解析器从中获取结构化数据。在这里,我收到格式错误的HTML响应,无法进一步解析。

我尝试了file_get_contents以及CURL。

我目前陷入困境,任何帮助或建议都将受到高度赞赏。 提前完成。

1 个答案:

答案 0 :(得分:2)

该网站可能会向您返回压缩内容。所以解码它。如果需要,可以使用php的gzdecode

或者,您可以使用curl获取压缩内容并自动解码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING, "");  // handling all compressions
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
$result = curl_exec($ch);
curl_close($ch);
print $result;