Helpers.php 2.72 KB
<?php


if (!function_exists('data_diff')) {
    /**
     * Get the active class if the condition is not falsy
     *
     * @param        $condition
     * @param string $activeClass
     * @param string $inactiveClass
     *
     * @return string
     */
    function data_diff($origin, $target) {
        $origin     =   new DateTime($origin);
        $target     =   new DateTime($target);
        $interval   =   $origin->diff($target);

        $y          =   $interval->format("%y");
        $m          =   $interval->format("%m");
        $d          =   $interval->format("%d");
        $limit      =   '';

        if (!empty($y)) {$limit .= "{$y}年";}
        if (!empty($m)) {$limit .= "{$m}个月";}
        if (!empty($d)) {$limit .= "{$d}天";}

        return $limit;
    }
}

if (!function_exists('coverData')) {
    /**
     * 字符串转换为对应值的字符串
     * @param $str
     * @param $data
     * @return string
     */
    function coverData($str, $data): string
    {
        $arr = explode(',', $str);
        $rs = [];
        foreach ($arr as $value) {
            if (isset($data[$value])) {
                $rs[] = $data[$value];
            }
        }
        return join(' ', $rs);
    }
}

if (!function_exists('crc64Table')) {
    /**
     * @return array
     */
    function crc64Table() {
        $crc64tab = array();
        // ECMA polynomial
        $poly64rev = (0xC96C5795 << 32) | 0xD7870F42;
        // ISO polynomial
        // $poly64rev = (0xD8 << 56);
        for ($i = 0; $i < 256; $i++)
        {
            for ($part = $i, $bit = 0; $bit < 8; $bit++) {
                if ($part & 1) {
                    $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev;
                } else {
                    $part = ($part >> 1) & ~(0x8 << 60);
                }
            }
            $crc64tab[$i] = $part;
        }
        return $crc64tab;
    }
}

if (!function_exists('crc64')) {
    /**
     * @param $string
     * @param $format
     * @return string
     */
    function crc64($string, $format = '%x'){
        static $crc64tab;
        if ($crc64tab === null) {
            $crc64tab = crc64Table();
        }

        $crc = 0;
        for ($i = 0; $i < strlen($string); $i++) {
            $crc = ~$crc;
            $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56));
            $crc = ~$crc;
        }
        return sprintf($format, $crc);
    }
}

if (!function_exists('getToken')) {
    /**
     * @param $key
     * @return array|string|string[]
     */
    function getToken($key){

        $key    =   mt_rand();
        $hash   =   hash_hmac("sha1", mt_rand() . time(), $key, true);
        return str_replace('=', '', strtr(base64_encode($hash), '+/', '-_'));
    }
}