php自定义函数

将xml格式转换为数组
在我们请求一些第三方接口的时候,要么返回给你json类型的数据格式,要么就是xml或者其他的,如果是json的话,很方便能直接使用,当遇到xml格式的时候,就需要转换为数组格式的,方便使用。
/**
 * 将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;
}
复制代码隐藏手机号中间四位数
通常,为了安全和保护用户隐私,用户手机号等关键信息,是不能完全暴露在界面上公开显示的,就需要处理一下,比如通常是隐藏中间四位数……
/**
 * 隐藏手机号中间四位数为****
 * @param string $mobile 正常手机号
 * @return mixed
 */
function replace_phone($mobile = '')
{
    $new_mobile = substr_replace($mobile, '****', 3, 4);
    return $new_mobile;
}
复制代码最简单的API请求通用返回数据格式
这里,我就最简单的说明一下,一般API请求,最基础要求返回的数据格式,通常呢,可以细分为成功返回和失败返回,大家可以根据实际情况处理,在很多框架中,都有直接封装好的方法,大家也可以去看看框架里是怎么处理的。
/**
 * 最简单的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请求之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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342