PHP 如何写 curl 请求

如果需要在 PHP 里调用其他网站的接口,或者抓取网页内容,curl 是最常用的工具之一。很多新手刚接触 PHP 时,总觉得 curl 是个很复杂的东西,其实只要结合日常场景拆解,掌握起来并不难。

先搞懂:curl 到底是什么?

简单说,curl 就是一个“数据快递员”——你告诉它要去哪个地址、带什么信息,它就能帮你把对方返回的内容带回来。比如你要给某外卖平台写个对接程序,需要调用平台的订单接口,这时候就得用 curl 发请求;或者想把自己网站的内容同步到另一个平台,也可以用 curl 抓取对方的页面数据。

PHP 如何写 curl 请求

第一步:先确认你的 PHP 有没有装 curl 扩展

很多新手写 curl 报错,大多是因为环境没配置对。你可以写一行简单的代码检查:

`php

<?php

var_dump(function_exists('curl_init'));

`

如果页面输出 bool(true),说明 curl 已经装好了;如果输出 bool(false),需要联系服务器管理员安装或开启 curl 扩展——虚拟主机用户可以在主机控制面板的“扩展功能”里找到对应选项。

第二步:写一个最基础的 GET 请求(带生活化例子)

GET 请求就是我们平时浏览器里输入网址直接访问的那种,比如你要获取某个天气 API 的数据,写法其实很固定,就像给快递员写一张最简单的取件条:

`php

<?php

// 1. 初始化 curl,告诉快递员要去哪个地址

$ch = curl_init('https://api.weather.com/v3/weather/now?city=北京');

// 2. 设置参数:告诉快递员“取完别直接输出,把内容存起来给我”

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 3. 执行请求,拿到返回的数据

$response = curl_exec($ch);

// 4. 关闭 curl,释放资源

curl_close($ch);

// 输出结果

echo $response;

`

这里有个容易踩的小坑:如果不加 CURLOPT_RETURNTRANSFER,curl 会直接把内容打印到页面上,而不是返回给变量,新手很容易在这里混淆。

第三步:处理复杂一点的 POST 请求(带场景)

如果是要给对方接口提交数据,比如给论坛接口发一条评论,就得用 POST 请求,就像给快递员写“要把包裹里的内容换成你要发的评论内容”。举个提交表单数据的例子:

`php

<?php

$ch = curl_init('https://your-forum.com/api/post-comment');

// POST 请求专属设置

curl_setopt($ch, CURLOPT_POST, true);

// 要提交的表单数据,就像包裹里的内容

$postData = [

'user_id' => '12345',

'comment' => '这个帖子写得很实用!',

'token' => '你的接口密钥'

];

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

// 基础设置还是要保留

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

`

如果需要提交 JSON 格式的数据,把 $postData 改成 json_encode($postData),还要加个请求头:curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']),就像告诉快递员“这个包裹是加密的 JSON,要按对应方式处理”。

最后:别忘了处理错误

很多时候接口可能超时或者地址不对,新手写代码经常忽略这一步。加个简单的错误判断就能避免踩坑:

`php

if(curl_errno($ch)){

echo '请求出错:' . curl_error($ch);

}

`

就像快递员没取到件,要及时告诉你哪里出了问题。

其实 PHP 的 curl 核心就是这几步:初始化、设置参数、执行请求、关闭资源,结合不同场景调整参数就行,不用记复杂的术语,多用几次就能熟练。

上一篇 JavaScript CommonJS 和 ES Module 区别