带有{}个字符的CURLOPT_URL

时间:2016-07-28 03:42:10

标签: libcurl php-curl

在我看到用PHP建立卷曲连接的例子中,它有这一行:

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

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

3 个答案:

答案 0 :(得分:0)

你需要的只是

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

你有{$url},但PHP只是替换了$url,因此大括号就在网址的周围。

祝你好运!

<强>更新

从卷曲文档和多个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.

答案 1 :(得分:0)

libcurl根本没有解释花括号,这是PHP本身在将字符串传递给libcurl之前完成的。

如果您尝试在命令行中使用curl:

,则可以轻松地看到这一点
utf8Helper

使用-g关闭globbing,因为命令行工具使用的globbing将以其他方式更改测试,工作。同样:此处另一个答案中提到的globbing仅由命令行工具实现和提供,因此PHP / CURL没有这样的支持。这不是您在PHP程序中看到的内容。

答案 2 :(得分:0)

"{$url}"完全等同于(string)$url。请参阅:PHP: Strings - Manual

  • 如果$url的值类型不是字符串,则将其转换为字符串。
  • 如果$url的值类型始终为字符串,则其代码为详细无意义
    您应该将"{$url}"替换为$url