2016-07-28 55 views
0

在我看到的是用來從PHP捲曲連接的例子,它有這樣一行:CURLOPT_URL {}個字符

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

看來實際的工作,但我不明白爲什麼他們表現出包在寬闊的大括號中的網址。這對CURL來說有什麼神奇的作用嗎?

回答

0

"{$url}"完全等同於(string)$url。請參閱:PHP: Strings - Manual

  • 如果$url的值類型不是字符串,則將其轉換爲字符串。
  • 如果$url值類型總是串,它們的代碼是冗長無義
    此時應更換"{$url}"$url
0

所有你需要的是

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

你有{$url},但PHP只是取代了$url,所以括號是各地的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. 
+0

是的,但不回答這個問題。捲曲解釋{}是做什麼的? – Gargoyle

+0

@Gargoyle這是否有幫助?讓我知道,謝謝! – FelisPhasma

0

的libcurl不解釋的花括號所有,這是由PHP本身的字符串傳遞給前完成libcurl的。

你可以很容易地看到自己,如果你嘗試使用curl使用這樣的命令行:

$ curl -g '{http://example.com/}' 
curl: (1) Protocol "{http" not supported or disabled in libcurl 

使用-g關掉通配符,因爲通配符的命令行工具使用,否則將改變測試它工作。還是那句話:在這裏對方的回答中也提到了通配被執行並由命令行工具僅所以PHP /捲曲有沒有這樣的支持提供。這不是你在PHP程序中看到的。