我正在使用Codeigniter Curl库,作者使用curl选项的等价整数。 php手册对curl_setopt_array说明了这一点:
键应该是有效的curl_setopt() 常数或其整数 等同物。
如何计算常数的整数当量?我用谷歌搜索了但没找到任何东西。
谢谢,Mark
答案 0 :(得分:15)
$arr = get_defined_constants(true);
var_dump($arr['curl']);
答案 1 :(得分:5)
扩展 ajreal 的回答
$constants = get_defined_constants(true);
$curlOptLookup = preg_grep('/^CURLOPT_/', array_flip($constants['curl']));
var_dump($curlOptLookup);
以上给出了整数查找,因此以下内容可行:
echo $curlOptLookup[119]; // outputs "CURLOPT_FTP_SSL"
如果你想要这些选项,需要再次翻转它的正确方法:
$curlOpts = array_flip($curlOptLookup);
echo $curlOpts['CURLOPT_FTP_SSL']; // outputs 119
答案 2 :(得分:1)
回声/打印它们......
示例:
<?php
echo(CURLOPT_URL);
答案 3 :(得分:1)
请注意,某些常量具有与它们关联的相同值,在上面的答案中它们将被覆盖。要获得完整列表,您不能填充数组。
$arr = get_defined_constants(true);
foreach ($arr['curl'] as $k => $v) {
if (preg_match('/CURLOPT/',$k)) {
print $v." => '$k',\n";
}
}
例如输出10026:-
10026 => 'CURLOPT_SSLCERTPASSWD'
10026 => 'CURLOPT_SSLKEYPASSWD'
10026 => 'CURLOPT_KEYPASSWD'
答案 4 :(得分:1)
@Orbling的使用curlopt值索引的数组的技术在大多数情况下都是正确的,除了您应该在翻转{em>之前过滤掉CURLOPT_*
元素。数组,因为 not 的各个CURLOPT_*
,CURLE_*
,CURLSSH_*
(等)选项之间的值存在冲突,因此它们只是彼此的别名。 / p>
例如,CURLOPT_POST
和CURLE_TOO_MANY_REDIRECTS
的值均为47。调用array_flip($constants['curl'])
时,后者将覆盖前者,而您将丢失CURLOPT_POST
。
所以也许可以这样做:
$constants = get_defined_constants(true);
$curlOptKeys = preg_grep('/^CURLOPT_/', array_keys($constants['curl']));
$curlOpts = array_intersect_key($constants['curl'], array_flip($curlOptKeys));
$curlOptLookup = array_flip($curlOpts);
echo $curlOpts['CURLOPT_POST']; // 47
echo $curlOptLookup[47]; // 'CURLOPT_POST'