首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP常用函数整理

PHP常用函数整理

原创
作者头像
pooky
发布2019-05-16 17:41:30
7280
发布2019-05-16 17:41:30
举报
文章被收录于专栏:开发随笔开发随笔

在日常开发中PHP用的较多,很多时候有一些小的脚本要做,并不是什么大的项目,那么有一些脚手架的函数这么多年来发现常用的就那么几个,这里整理下方便共享

curl_get 网络通信 get请求

function curl_get($url, array $get = [], array $options = array())
{
    $defaults = array(
        CURLOPT_URL => $url . (strpos($url, '?') === FALSE ? '?' : '') . http_build_query($get),
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_TIMEOUT => 4
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if (!$result = curl_exec($ch)) {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}

curl_post 网络通信 post请求

function curl_post($url, $post = NULL, array $options = array())
{
    if (is_array($post)) { // 有可能json 传输 不是key=>value 形式
        $postData = http_build_query($post);
    } else {
        $postData = $post;
    }


    $defaults = array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 4,
        CURLOPT_POSTFIELDS => $postData
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if (!$result = curl_exec($ch)) {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}

如果需要额外的OPTION可以参考下面或者官方文档

 $options = [
            CURLOPT_COOKIE => 'uin=' . $sOpenId . ';skey=' . $_COOKIE["skey"],
            CURLOPT_HTTPHEADER => array('Host: info.gamecenter.qq.com')
        ];

        $back = curl_get($url, $data, $options);

socket通信方式主要是UDP和TCP请求通信

		$param = array(
            "param1" => "1",
            "param2" => "2",
            "data2" => array(
                "area2" => 4
            )
        );
        $post_str = json_encode($param) . "\0";
        $host = '123.123.123.211';
        $port = '80';
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or amsOutPut(-1, "Could not create  socket\n");

        $connection = socket_connect($socket, $host, $port) or amsOutPut(-1, "Could not connet server\n");
        socket_write($socket, $post_str) or amsOutPut(-1, "Write failed\n");
        $buff = socket_read($socket, 1024);
        socket_close($socket);
        if ($buff === false) {
            die(-1, "Sys Error \n");
        }
        echo $buff;

getClientIp 获取客户端IP

function getClientIp()
{
    $unknown = 'unknown';
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown)) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    if (false !== strpos($ip, ',')) {
        $ips = explode(',', $ip);
        $ip = reset($ips);
    }
    return $ip;
}

GBKtoUTF8 编码转换 GBK编码转换成UTF8编码

function GBKtoUTF8($str)
{
    if (is_array($str)) {
        foreach ($str as &$value) {
            $value = GBKtoUTF8($value);
        }
        return $str;
    } elseif (is_string($str) && mb_detect_encoding($str, 'UTF-8', true) === false) {
        $str = iconv("GBK", "UTF-8//IGNORE", $str);
        return $str;
    } else {
        return $str;
    }
}

UTF8toGBK UTF8编码转换成GBK编码

function UTF8toGBK($str)
{
    if (is_array($str)) {
        foreach ($str as &$value) {
            $value = UTF8toGBK($value);
        }
        return $str;
    } elseif (is_string($str) && mb_detect_encoding($str, 'UTF-8', true) !== false) {
        $str = iconv("UTF-8", "GBK//IGNORE", $str);
        return $str;
    } else {
        return $str;
    }
}

当然还有很多其他的函数,这里整理下常用的几个 其他的以后可以再整理

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • curl_get 网络通信 get请求
  • curl_post 网络通信 post请求
  • socket通信方式主要是UDP和TCP请求通信
  • getClientIp 获取客户端IP
  • GBKtoUTF8 编码转换 GBK编码转换成UTF8编码
  • UTF8toGBK UTF8编码转换成GBK编码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档