【问题标题】:PHP Curl, where can I find a list of integer equivelants of constantsPHP Curl,我在哪里可以找到常量的整数等值列表
【发布时间】:2011-05-22 10:14:07
【问题描述】:

我正在使用 Codeigniter Curl 库,作者使用 curl 选项的整数等效项。 php 手册为curl_setopt_array 说明了这一点:

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

我如何确定常量的整数等价物是什么?我用谷歌搜索了它,但没有找到任何东西。

谢谢,马克

【问题讨论】:

    标签: php curl integer constants


    【解决方案1】:

    回显/打印它们...

    例子:

    <?php
    echo(CURLOPT_URL);
    

    【讨论】:

    • @Mark 我已经为我的答案添加了反向查找。
    【解决方案2】:
    $arr = get_defined_constants(true);
    var_dump($arr['curl']);
    

    【讨论】:

    • 有用,完全忘了get_defined_constants()
    • 实际上这有助于我查看所有常量,然后我可以轻松搜索整数。
    【解决方案3】:

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

    【讨论】:

    • @FMC:好点子,适合在接听preg_grep() 通话的途中执行array_flip(),这显然需要在之后进行反转。
    【解决方案4】:

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

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

    【讨论】:

    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 2017-10-08
      • 2015-03-07
      • 2015-10-08
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多