📅  最后修改于: 2023-12-03 15:33:28.369000             🧑  作者: Mango
Curl是PHP中处理URL请求和传输数据的一种方式。通过Curl库,我们可以轻松地向指定的URL发送请求并获取响应。
有时候,我们需要获取网页的正文响应,即网页的HTML代码。本文将介绍如何使用Curl从网页中获取正文响应。
在使用Curl获取正文响应之前,我们需要先了解Curl的基本用法。下面是一个简单的Curl GET请求示例:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.example.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
]);
$response = curl_exec($curl);
if (curl_error($curl)) {
$error_msg = curl_error($curl);
// 处理错误
}
curl_close($curl);
echo $response;
上述代码中,我们首先初始化Curl句柄,并通过curl_setopt_array
函数设置Curl选项。其中,CURLOPT_URL
表示要请求的URL地址,CURLOPT_RETURNTRANSFER
表示将响应返回而不是直接输出,CURLOPT_FOLLOWLOCATION
表示跟随重定向,CURLOPT_MAXREDIRS
表示最多跟随的重定向次数。
然后,我们向该URL地址发送GET请求,并将响应赋值给$response
变量。判断是否有Curl错误,如果有则处理错误,最后关闭Curl句柄,并输出响应。
我们可以使用Curl从网页中获取正文响应。获取网页正文响应的方法是只保留HTML代码,过滤掉其他内容。下面是一个获取网页正文响应的示例:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.example.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
]);
$html = curl_exec($curl);
if (curl_error($curl)) {
$error_msg = curl_error($curl);
// 处理错误
}
curl_close($curl);
// 过滤掉HTML代码以外的内容
preg_match('/<body[^>]*>(.*?)<\/body>/si', $html, $matches);
if (isset($matches[1])) {
$body = $matches[1];
} else {
$body = '';
}
echo $body;
上述代码中,我们在发起Curl请求后,将响应保存在$html
变量中。然后,使用preg_match
函数从响应中提取网页正文响应。
正则表达式/<body[^>]*>(.*?)<\/body>/si
用于匹配<body>
标签以内的所有内容。其中,si
选项表示匹配时不区分大小写,.
选项表示.
可以匹配换行符。
最后,判断是否匹配到正文响应,如果有则保存在变量$body
中,否则为空字符串。
本文介绍了如何使用Curl从网页中获取正文响应。我们可以通过Curl发送HTTP请求,并使用正则表达式提取HTML代码中的正文响应。在使用Curl时,我们应该了解基本的用法,并根据需求设置相应的选项。