0

PHP から curl 接続を作成するために私が見た例では、次の行がありました。

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

実際には機能しているように見えますが、URL を波括弧で囲むように示した理由がわかりません。それは CURL にとって何か魔法のようなことをしますか?

4

3 に答える 3

0

libcurl は中括弧をまったく解釈しません。これは、文字列が libcurl に渡される前に PHP 自体によって行われます。

curl を使用してコマンドラインでそのようなものを使用しようとすると、自分で簡単に確認できます。

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

コマンドラインツールが使用するグロビングはテストを変更し、動作するため、 -g を使用してグロビングをオフにします。繰り返しますが、ここの他の回答でも言及されているグロビングは、コマンドラインツールによってのみ実装および提供されるため、PHP/CURL ではそのようなサポートはありません。これは、PHP プログラムで使用されているものではありません。

于 2016-08-09T08:26:33.133 に答える
0

"{$url}"と完全に等価(string)$urlです。参照してください: PHP: 文字列 - マニュアル

  • の値の型が$url文字列でない場合は、文字列に変換されます。
  • の値の型$urlが常に文字列の場合、それらのコードはverboseまたはnonsenseです。
    に置き換える必要があり"{$url}"ます$url
于 2016-08-09T19:39:37.277 に答える
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 に答える