📜  php curl 获取正文响应 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:28.369000             🧑  作者: Mango

PHP Curl 获取正文响应

Curl是PHP中处理URL请求和传输数据的一种方式。通过Curl库,我们可以轻松地向指定的URL发送请求并获取响应。

有时候,我们需要获取网页的正文响应,即网页的HTML代码。本文将介绍如何使用Curl从网页中获取正文响应。

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时,我们应该了解基本的用法,并根据需求设置相应的选项。