0

在我看到的从 PHP 建立 curl 连接的示例中,它有以下行:

curl_setopt($ch, CURLOPT_URL, "{$url}");

它似乎确实有效,但我不明白为什么他们显示将 URL 包装在波浪形的大括号中。这对 CURL 有什么神奇的作用吗?

4

3 回答 3

0

所有你需要的是

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.
于 2016-07-28T03:48:05.707 回答
0

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 程序中看到的。

于 2016-08-09T08:26:33.133 回答
0

"{$url}"完全等价于(string)$url。请参阅:PHP:字符串 - 手册

  • 如果值类型$url不是字符串,则转换为字符串。
  • 如果值类型 of$url始终是字符串,则它们的代码是冗长的或无意义的。
    你应该替换"{$url}"$url.
于 2016-08-09T19:39:37.277 回答