PHP Curl,在哪里可以找到常量的整数等价物列表

发布于 2024-10-06 12:51:48 字数 305 浏览 2 评论 0原文

我正在使用 Codeigniter Curl 库,作者使用了 curl 选项的整数等效项。 php 手册对于 curl_setopt_array 是这样说的:

键应该是有效的curl_setopt() 常量或其整数 等价物。

如何找出常量的整数等价物?我用谷歌搜索过但没有找到任何东西。

谢谢,马克

I'm using the Codeigniter Curl library, and the author uses the integer equivalents of the curl options. The php manual says this for curl_setopt_array:

The keys should be valid curl_setopt()
constants or their integer
equivalents.

How do I figure out what the integer equivalents are for a constant? I've googled it but haven't found anything.

Thanks, Mark

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

眼趣 2024-10-13 12:51:48
$arr = get_defined_constants(true);
var_dump($arr['curl']);
$arr = get_defined_constants(true);
var_dump($arr['curl']);
时光礼记 2024-10-13 12:51:48

扩展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

To expand on ajreal's answer

$constants = get_defined_constants(true);
$curlOptLookup = preg_grep('/^CURLOPT_/', array_flip($constants['curl']));

var_dump($curlOptLookup);

The above gives an integer lookup, so the following would work:

echo $curlOptLookup[119]; // outputs "CURLOPT_FTP_SSL"

If you want the options, the correct way round it needs to be flipped again:

$curlOpts = array_flip($curlOptLookup);

echo $curlOpts['CURLOPT_FTP_SSL']; // outputs 119
樱娆 2024-10-13 12:51:48

@Orbling 获取由curlopt 值索引的数组的技术大部分是正确的,除非您应该翻转之前过滤掉CURLOPT_*元素数组,因为各种 CURLOPT_*CURLE_*CURLSSH_*(等)选项之间存在值冲突, >不仅仅是彼此的别名。

例如,CURLOPT_POSTCURLE_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'

@Orbling 's technique for getting an array indexed by the curlopt values is mostly correct, except you should filter out the CURLOPT_* elements before flipping the array, since there are collisions in values between the various CURLOPT_*, CURLE_*, CURLSSH_* (etc.) options that are not simply aliases for each other.

For example, CURLOPT_POST and CURLE_TOO_MANY_REDIRECTS both have the value 47. When you call array_flip($constants['curl']), the latter entry overwrites the former, and you lose CURLOPT_POST.

So maybe do this instead:

$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'

素食主义者 2024-10-13 12:51:48

回显/打印它们...

示例:

<?php
echo(CURLOPT_URL);

Echo/print them...

Example:

<?php
echo(CURLOPT_URL);
濫情▎り 2024-10-13 12:51:48

请注意,某些常量具有与其关联的相同值,在上面的答案中,这些常量将被覆盖。要获得完整列表,您不能填充数组。

$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'

Just beware that some constants have the same value associated with them, in the answers above these will get overwritten. To get a full list you can not populate an array.

$arr = get_defined_constants(true);
foreach ($arr['curl'] as $k => $v) {
    if (preg_match('/CURLOPT/',$k)) {
            print $v." => '$k',\n";
    }
}

For example Output For 10026:-

10026 => 'CURLOPT_SSLCERTPASSWD'
10026 => 'CURLOPT_SSLKEYPASSWD'
10026 => 'CURLOPT_KEYPASSWD'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文