PHP 如何写 curl 请求
如果需要在 PHP 里调用其他网站的接口,或者抓取网页内容,curl 是最常用的工具之一。很多新手刚接触 PHP 时,总觉得 curl 是个很复杂的东西,其实只要结合日常场景拆解,掌握起来并不难。
先搞懂:curl 到底是什么?
简单说,curl 就是一个“数据快递员”——你告诉它要去哪个地址、带什么信息,它就能帮你把对方返回的内容带回来。比如你要给某外卖平台写个对接程序,需要调用平台的订单接口,这时候就得用 curl 发请求;或者想把自己网站的内容同步到另一个平台,也可以用 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 核心就是这几步:初始化、设置参数、执行请求、关闭资源,结合不同场景调整参数就行,不用记复杂的术语,多用几次就能熟练。