在我看到的从 PHP 建立 curl 连接的示例中,它有以下行:
curl_setopt($ch, CURLOPT_URL, "{$url}");
它似乎确实有效,但我不明白为什么他们显示将 URL 包装在波浪形的大括号中。这对 CURL 有什么神奇的作用吗?
所有你需要的是
curl_setopt($ch, CURLOPT_URL, "$url");
你有{$url}
,但是 PHP 只是替换了$url
,所以大括号在 url 周围。
祝你好运!
更新:
来自 curl 文档和多个 SO 问题:
-g/--globoff
This option switches off the "URL globbing parser". When you set this option, you can
specify URLs that contain the letters {}[] without having them being interpreted by curl
itself. Note that these letters are not normal legal URL contents but they should be
encoded according to the URI standard.
libcurl 根本不解释花括号,这是在将字符串传递给 libcurl 之前由 PHP 本身完成的。
如果您尝试在命令行上使用 curl,您可以很容易地看到这一点:
$ curl -g '{http://example.com/}'
curl: (1) Protocol "{http" not supported or disabled in libcurl
使用 -g 关闭 globbing,因为命令行工具使用的 globbing 会改变测试并且它会起作用。再说一遍:这里的另一个答案中也提到的 globbing仅由命令行工具实现和提供,因此 PHP/CURL 没有这样的支持。这不是您在 PHP 程序中看到的。
"{$url}"
完全等价于(string)$url
。请参阅:PHP:字符串 - 手册
$url
不是字符串,则转换为字符串。$url
始终是字符串,则它们的代码是冗长的或无意义的。"{$url}"
成$url
.