📅  最后修改于: 2023-12-03 15:21:54.270000             🧑  作者: Mango
在 PHP 中,我们可以使用多种方式来从 URL 中下载 HTML 内容,例如:
下面将介绍这两种方式的用法以及优缺点。
file_get_contents()
函数可以读取一个文件的内容或者一个 URL 地址的内容,例如:
$url = 'http://example.com';
$html = file_get_contents($url);
echo $html;
该代码将会输出 http://example.com
这个网站的 HTML 内容。需要注意的是,如果使用该函数下载 https:// 开头的 URL 地址的内容,会产生一个类似于下面的警告:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
这是因为 cURL 扩展默认情况下不会验证 SSL 证书,如果要解决该问题,可以传递一个参数 stream_context_create()
给函数,如下所示:
$url = 'https://example.com';
$options = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
);
$context = stream_context_create($options);
$html = file_get_contents($url, false, $context);
echo $html;
cURL 是一个强大的 PHP 扩展,专门用于从 URL 下载内容。使用 cURL 可以实现更精细的 HTTP 请求和响应控制,例如:
以下是一个使用 cURL 下载 URL 内容的示例:
$url = 'http://example.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($curl);
curl_close($curl);
echo $html;
该代码将会输出 http://example.com
这个网站的 HTML 内容。需要注意的是,如果使用该函数下载 https:// 开头的 URL 地址的内容,需要设置一个额外的选项 CURLOPT_SSL_VERIFYPEER
,如下所示:
$url = 'https://example.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$html = curl_exec($curl);
curl_close($curl);
echo $html;
无论是使用 file_get_contents()
还是 cURL,都可以方便地从 URL 下载 HTML 内容。如果只需要简单地下载内容,使用 file_get_contents()
即可;如果需要更加精细的 HTTP 请求和响应控制,则应该使用 cURL。