【二】PHP实用自定义函数-转换篇

前言

这篇文章的自定义函数,主要说一些数据转换的,就不虾扯蛋了,直接说正事,我后续会陆续写一些PHP开发中实用的一些自定义函数,方便用到的朋友,可以快速开发和使用。php

将xml格式转换为数组

在咱们请求一些第三方接口的时候,要么返回给你json类型的数据格式,要么就是xml或者其余的,若是是json的话,很方便能直接使用,当遇到xml格式的时候,就须要转换为数组格式的,方便使用。html

/** * 将xml格式转换为数组 * @param string $xml xml字符串 * @return mixed */
function xml_to_array($xml = '') {
    // 利用函数simplexml_load_string()把xml字符串载入对象中
    $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
    // 编码对象后,再解码便可获得数组
    $arr = json_decode(json_encode($obj), true);
    return $arr;
}
复制代码

隐藏手机号中间四位数

一般,为了安全和保护用户隐私,用户手机号等关键信息,是不能彻底暴露在界面上公开显示的,就须要处理一下,好比一般是隐藏中间四位数……ajax

/** * 隐藏手机号中间四位数为**** * @param string $mobile 正常手机号 * @return mixed */
function replace_phone($mobile = '') {
    $new_mobile = substr_replace($mobile, '****', 3, 4);
    return $new_mobile;
}
复制代码

最简单的API请求通用返回数据格式

这里,我就最简单的说明一下,通常API请求,最基础要求返回的数据格式,一般呢,能够细分为成功返回和失败返回,你们能够根据实际状况处理,在不少框架中,都有直接封装好的方法,你们也能够去看看框架里是怎么处理的。json

/** * 最简单的Ajax请求返回数据格式 * @param string $msg 返回提示信息 * @param int $code 返回标识符号 * @param array $data 返回数据 */
function ajax_return($msg = '', $code = 0, $data = []) {
    $return['code'] = $code;
    $return['msg'] = $msg;
    $return['data'] = $data;
    exit(json_encode($return, JSON_UNESCAPED_UNICODE));
}
复制代码

截取字符串

一般,在一些列表或者固定范围内,显示必定长度的字符串的时候,若是咱们不控制范围的话,极可能会致使超出界面显示,或者溢出显示,致使页面布局不美观等,这个时候,就须要咱们控制显示字符串的长度,超出部分截取掉……数组

/** * 截取字符串,超出部分用省略符号显示 * @param string $text 待截取字符串 * @param int $length 截取长度,默认所有截取 * @param string $rep 截取超出替换的字符串,默认为省略号 * @return string */
function cut_string($text = '', $length = 0, $rep = '…') {
    if (!empty($length) && mb_strlen($text, 'utf8') > $length) {
        $text = mb_substr($text, 0, $length, 'utf8') . $rep;
    }
    return $text;
}
复制代码

根据生日计算年龄

在一些论坛或者交友类平台中,常常会看到,某某年龄18岁,若是当你遇到这类开发需求的时候,是否是也得处理一下,我是个善良的开发者嘛,这种事情,我确定帮想到了,让我来就好了,安排上,已经写好了,能够直接拿来用。安全

/** * 根据生日计算年龄 * @param string $date 生日的年月日 * @return int */
function get_age($date = '') {
    $age = 0;
    $time = strtotime($date);
    // 日期非法,则不处理
    if (!$time) {
        return $age;
    }
    // 计算时间年月日差
    $date = date('Y-m-d', $time);
    list($year, $month, $day) = explode("-", $date);
    $age = date("Y", time()) - $year;
    $diff_month = date("m") - $month;
    $diff_day = date("d") - $day;
    // 不满周岁年龄减1
    if ($age < 0 || $diff_month < 0 || $diff_day < 0) {
        $age--;
    }
    return $age;
}
复制代码

日期时间显示格式转换

最多见的,咱们天天刷微信朋友圈的生活,左下角的那个时间,好比:10分钟前、2小时前、昨天等,你是否也遇到过这类的时间显示转换的需求,这类开发需求找我啊,我都给安排好了,拿来即用的那种哦……微信

/** * 日期时间显示格式转换 * @param int $time 时间戳 * @return bool|string */
function transfer_show_time($time = 0) {
    // 时间显示格式
    $day_time = date("m-d H:i", $time);
    $hour_time = date("H:i", $time);
    // 时间差
    $diff_time = time() - $time;
    $date = $day_time;
    if ($diff_time < 60) {
        $date = '刚刚';
    } else if ($diff_time < 60 * 60) {
        $min = floor($diff_time / 60);
        $date = $min . '分钟前';
    } else if ($diff_time < 60 * 60 * 24) {
        $h = floor($diff_time / (60 * 60));
        $date = $h . '小时前 ' . $hour_time;
    } else if ($diff_time < 60 * 60 * 24 * 3) {
        $day = floor($diff_time / (60 * 60 * 24));
        if ($day == 1) {
            $date = '昨天 ' . $day_time;
        } else {
            $date = '前天 ' . $day_time;
        }
    }
    return $date;
}
复制代码

获取毫秒数

平常开发中,咱们通常都是经过time()直接获取时间戳秒数,不多会遇到获取毫秒数的需求,可是呢,有备无患,万一啥时候一个坑比需求有这个要求呢,那怎么也得知足吧,做为一个职业的开发者,通常都是有求必应的……框架

/** * 获取毫秒数 * @return string */
function get_millisecond() {
    list($t1, $t2) = explode(' ', microtime());
    $ms = sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    return $ms;
}
复制代码

CURL请求之GET方式

一般,咱们都会遇到须要请求第三方接口的,并且通常也都会封装本身的接口请求方法,大同小异,这是最基础的GET请求封装curl

/** * CURL请求之GET方式 * @param string $url 请求接口地址 * @return bool|mixed */
function curl_get($url = '') {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 不验证SSL证书。
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}
复制代码

CURL请求之POST方式

不少第三方接口,通常都是POST方式的比较多,因此,我也给你们封装了一个基础的请求方法,你们能够根据本身的实际状况,进行修改和完善。函数

/** * CURL请求之POST方式 * @param string $url 请求接口地址 * @param array $data 请求参数 * @param int $timeout 超时时间 * @return mixed */
function curl_post($url = '', $data = [], $timeout = 3000) {
    $post_data = http_build_query($data, '', '&');
    header("Content-type:text/html;charset=utf-8");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}
复制代码

最后

我后续会慢慢更新其余的实用函数,若是你们有其余好玩的、好用的欢迎分享出来,你们一块儿学习和交流。对了,若是有说的不对的或者错误的地方,请你们指出来,我会努力改进,谢谢。

相关文章
相关标签/搜索