将 curl 转换为 PHP

curl2code 使用 cURL 扩展或 Guzzle 库将 curl 命令转换为 PHP 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于类似的服务器端语言,请查看我们的 curl 转 Python 转换器curl 转 Ruby。下方是实用的 PHP 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

    F12Ctrl+Shift+I 打开浏览器开发者工具。

  2. 2

    进入 Network 标签页

    点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。

  3. 3

    复制为 cURL

    右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。

常见问题解答

什么是 PHP cURL?

PHP 的 curl 扩展是 C 语言 libcurl 库的封装,提供了强大的 HTTP 客户端功能。它几乎支持 curl 本身支持的所有协议和特性。使用 curl_init() 初始化,使用 curl_setopt() 设置选项,并使用 curl_exec() 执行。curl2code 还支持 GuzzleRequests 作为替代方案。

PHP cURL vs Guzzle vs Requests —— 我应该使用哪一个?

PHP cURL 是底层的且内置的——不需要 Composer。Guzzle 是最受欢迎的 PHP HTTP 客户端,支持 PSR-7、中间件和异步请求。Requests 为快速任务提供简单的 API。现代项目请使用 Guzzle,极简配置请使用 PHP cURL。关于其他语言中的类似选项,请参阅 curl 转 Python

如何在 PHP 中处理身份验证?

使用 cURL:curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer token'])。对于 Basic 认证:curl_setopt($ch, CURLOPT_USERPWD, 'user:pass')。Guzzle 使用 'auth' => ['user', 'pass']'headers' => ['Authorization' => 'Bearer token']。curl2code 会自动处理 -u 和 Bearer 标志。

如何在 PHP 中发送多部分表单数据?

使用 cURL:向 CURLOPT_POSTFIELDS 传递一个数组,其中文件包含 new CURLFile('path')。Guzzle 使用带有字段/文件数组的 'multipart' 选项。curl2code 会将 -F 标志转换为每个 PHP 库变体的正确格式。

如何在 PHP 中处理 HTTP 错误?

使用 cURL:检查 curl_errno($ch) 获取传输错误,并手动解析响应状态。Guzzle 在失败时抛出 RequestException —— 捕获 ClientException (4xx)、ServerException (5xx) 和 ConnectException (网络)。务必调用 curl_close($ch) 以释放资源。

如何在 PHP 中发起异步 HTTP 请求?

Guzzle 通过 $client->requestAsync('GET', $url) 支持异步并返回 Promise。使用 Promise\Utils::all() 处理并发请求。使用 cURL 时,使用 curl_multi_* 函数进行并行执行。对于真正的异步 PHP,请考虑 ReactPHP 或 Amp 框架及其 HTTP 客户端。

如何在 PHP 中设置超时?

使用 cURL:CURLOPT_CONNECTTIMEOUT 用于连接超时,CURLOPT_TIMEOUT 用于总请求时间。Guzzle 接受以秒为单位的 'connect_timeout''timeout'。这些直接对应 curl 的 --connect-timeout--max-time 选项。

如何在 PHP 中使用代理?

使用 cURL:curl_setopt($ch, CURLOPT_PROXY, 'http://proxy:8080')。对于 SOCKS5:添加 CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5。Guzzle 使用 'proxy' => 'http://proxy:8080' 选项。curl2code 会将 -x--proxy 标志转换为相应的 PHP 代码。

如何在 PHP 中发送带有 JSON 正文的 POST 请求?

使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 PHP。生成的代码使用 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data))。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 cURL 代码中设置相应的 Content-Type 请求头。

如何在 PHP 中添加 Bearer 令牌授权?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 cURL 代码:curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer TOKEN'])。curl2code 会从 -H "Authorization: Bearer ..."--oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass

如何在 PHP 中设置 Content-Type 请求头?

curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 cURL 代码:curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json'])。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 cURL API。

PHP cURL 扩展与 Guzzle —— 我应该使用哪一个?

PHP cURL 扩展curl_* 函数)内置于 PHP 中,不需要额外的依赖项 —— 非常适合简单的请求或希望最小化开销的情况。Guzzle 是一个功能齐全的 HTTP 客户端,支持中间件、异步请求、PSR-7/PSR-18 以及自动重试。轻量级脚本使用 cURL,复杂应用程序使用 Guzzle。curl2code 为两者都生成代码 —— 在语言下拉菜单中选择您喜欢的变体。

有用链接

curl 指南

将 curl 转换为其他语言