zoukankan      html  css  js  c++  java
  • PHP常用方法汇总

     函数效果:

    /**
     * 正则匹配img标签src
     * @param $tag
     * @return array
     */
    function extract_attrib($tag) {
        preg_match_all('/(id|alt|title|src)=("[^"]*")/i', $tag, $matches);
        $ret = array();
        foreach($matches[1] as $i => $v) {
            $ret[$v] = $matches[2][$i];
        }
        return $ret;
    }
    function gf_dump($var) {
        echo '<pre>';
        print_r($var);
        echo '</pre>';
    }
    function gf_now($time = 0) {
        $time = empty($time) ? time() : $time;
        return date('Y-m-d H:i:s', $time);
    }
    /**
     * 安全的获取客户端IP
     * @return string
     */
    function gf_get_remote_addr() {
        if(!empty($_SERVER["HTTP_CLIENT_IP"])) {
            $chp = $_SERVER["HTTP_CLIENT_IP"];
        } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
            $chp = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if(!empty($_SERVER["REMOTE_ADDR"])) {
            $chp = $_SERVER["REMOTE_ADDR"];
        } else {
            $chp = '';
        }
        // ipv4 & ipv6
        preg_match("/[d.]{7,15}|[:0-9a-fA-F]+/", $chp, $chps);
        $chp = isset($chps[0]) ? $chps[0] : 'unknown';
        unset($chps);
        return $chp;
    }
    /**
     * http post 请求
     * @param  [string] $url        [description]
     * @param  [string] $parameters [description]
     * @param  array  $headers    [description]
     * @return [obj]             [description]
     */
    function gf_http_post($url,$parameters = NULL, $headers = array()){
        return gf_http($url,'post' ,$parameters , $headers );
    }
    
    /**
     * http get 请求
     * @param  [string] $url        [description]
     * @param  [string] $parameters [description]
     * @param  array  $headers    [description]
     * @return [obj]             [description]
     */
    function gf_http_get($url, $parameters = NULL,$headers = array()){
        return gf_http($url,'get' ,$parameters , $headers );
    }
    
    /**
     * [gf_http description]
     * @param  [type] $url        [description]
     * @param  [type] $method     [description]
     * @param  [type] $parameters [description]
     * @param  array  $headers    [description]
     * @return [type]             [description]
     */
    function gf_http($url, $method, $parameters = NULL, $headers = array()) {
        if(empty($url)){return NULL;}
        $ch = curl_init();
        /* Curl settings */
        curl_setopt($ch, CURLOPT_HTTP_VERSION           , CURL_HTTP_VERSION_1_0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER         , TRUE);
        curl_setopt($ch, CURLOPT_TIMEOUT                , 3000);
        curl_setopt($ch, CURLOPT_HEADER                 , FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER         , FALSE); // 跳过证书检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST         , 2);  // 从证书中检查SSL加密算法是否存在
        switch (strtolower($method)) {
            case 'post':
                curl_setopt($ch, CURLOPT_POST, TRUE);
                if (!empty($parameters)) {
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
                }
                break;
            case 'get':
                if (!empty($parameters)) {
                    $url .= strpos($url, '?') === false ? '?' : '&';
                    $url .= http_build_query($parameters);
                }
                break;
            default:
                # code...
                break;
        }
        curl_setopt($ch, CURLOPT_URL                    , $url );
        curl_setopt($ch, CURLOPT_HTTPHEADER             , $headers);
        curl_setopt($ch, CURLINFO_HEADER_OUT            , TRUE );
        $response = curl_exec($ch);
        curl_close ($ch);
        return $response;
    }
  • 相关阅读:
    【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)
    全球疫情爬取及展示
    两个命令配置云服务器web开发环境
    云服务器的两类系统特点整理介绍
    团队介绍和项目简介
    Navicat连接阿里云服务器上MySQL数据库
    Android_bilibili式评论及回复的简单实现
    人月神话阅读笔记02
    每日进度博客_2
    每日进度博客_1
  • 原文地址:https://www.cnblogs.com/sgm4231/p/12073078.html
Copyright © 2011-2022 走看看