PHP から curl 接続を作成するために私が見た例では、次の行がありました。
curl_setopt($ch, CURLOPT_URL, "{$url}");
実際には機能しているように見えますが、URL を波括弧で囲むように示した理由がわかりません。それは CURL にとって何か魔法のようなことをしますか?
libcurl は中括弧をまったく解釈しません。これは、文字列が libcurl に渡される前に PHP 自体によって行われます。
curl を使用してコマンドラインでそのようなものを使用しようとすると、自分で簡単に確認できます。
$ curl -g '{http://example.com/}'
curl: (1) Protocol "{http" not supported or disabled in libcurl
コマンドラインツールが使用するグロビングはテストを変更し、動作するため、 -g を使用してグロビングをオフにします。繰り返しますが、ここの他の回答でも言及されているグロビングは、コマンドラインツールによってのみ実装および提供されるため、PHP/CURL ではそのようなサポートはありません。これは、PHP プログラムで使用されているものではありません。
"{$url}"
と完全に等価(string)$url
です。参照してください: PHP: 文字列 - マニュアル
$url
文字列でない場合は、文字列に変換されます。$url
が常に文字列の場合、それらのコードはverboseまたはnonsenseです。"{$url}"
ます$url
。あなたに必要なのは
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.