循环包含cURL选项的数组并设置它们的问题

时间:2011-02-28 16:32:45

标签: php curl

我正在创建一个库,允许用户在发出请求之前动态添加/删除cURL选项。 foreach循环如下所示:

$ch = curl_init($url);

// Cycle through each option and set them
foreach($setup['curl_options'] as $option => $value)
{
    echo '<p>' . $option . ' = ' . $value . '</p>';
    curl_setopt($ch, $option, $value);
}

数组键/值在段落中正确显示,但是当将值添加到curl_setopt时,我收到错误:

curl_setopt()期望参数2为long,给定字符串。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

第二个参数(您的$option)必须是常量值。

这里http://php.net/manual/en/function.curl-setopt.php您定义了所有可用的常量。

如果您已经使用了constans值,则应将其解析为(long)类型。

如果您只有该常量的名称,请使用constant($option)但请确保值也是大写且正确。

答案 1 :(得分:1)

curl_setopt($ch, $option, $value);

假设$option是'CURLOPT_HEADER'。您的代码归结为:

curl_setopt($ch, 'CURLOPT_HEADER', $value);

常量的名称现在是一个字符串,而不是实际的常量。您需要做的是在构建时存储常量在数组中表示的值:

$setup['curl_options'][] = array('CURLOPT_HEADER', true); // wrong
$setup['curl_options'][] = array(CURLOPT_HEADER, true); // right

答案 2 :(得分:0)

尝试

curl_setopt($ch, constant($option), $value);