将 curl 转换为 PHP
curl2code 使用 cURL 扩展或 Guzzle 库将 curl 命令转换为 PHP 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于类似的服务器端语言,请查看我们的 curl 转 Python 转换器 或 curl 转 Ruby。下方是实用的 PHP 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 PHP cURL?
PHP 的 curl 扩展是 C 语言 libcurl 库的封装,提供了强大的 HTTP 客户端功能。它几乎支持 curl 本身支持的所有协议和特性。使用 curl_init() 初始化,使用 curl_setopt() 设置选项,并使用 curl_exec() 执行。curl2code 还支持 Guzzle 和 Requests 作为替代方案。
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 为两者都生成代码 —— 在语言下拉菜单中选择您喜欢的变体。