无需言 做自己 业 ,精于勤 荒于嬉.

MYSQL 创建用户及数据库,并赋予权限

发表日期:2022-08-12 17:01:56 | 来源: | 分类:MYSQL

      示例1
#创建一个名为 testUser 的用户,%指任意主机可以连接 或 127.0.0.1 指定ip连接
#需要特别注意的是:'testUser'@'%'与'testUser'@'localhost' 看起来像是一个用户,事实上要注意 这是两个用户!可以有不同的权限
CREATE USER 'testUser'@'%' IDENTIFIED WITH mysql_native_password;

#给这个用户赋予一些查询mysql环境的权限
GRANT USAGE ON *.* TO 'testUser'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

#给这个用户设置密码
SET PASSWORD FOR 'testUser'@'%' = '123456';

#创建数据库 testDB
CREATE DATABASE IF NOT EXISTS `testDB`;

#把 testDB库的所有权限 赋予 'testUser'@'%'的登录用户
GRANT ALL PRIVILEGES ON `testDB`.* TO 'testUser'@'%';


# `testDB\_%`.* TO 'testDB'@'%'; 这里可以使用通配符% 代表 把testDB_开头的数据库都给这个用户

阅读全文 »

PHP杂项 ip白黑名单验证

发表日期:2022-08-06 16:12:05 | 来源: | 分类:PHP杂项

      示例1
function validate_ip($ip, $allow_ip_map)
{
    if (in_array($ip, $allow_ip_map)) {
        return true;
    } else {
        $flag = false;
        $ip_pos = explode('.', $ip);
        foreach ($allow_ip_map as $val) {
            if (strpos($val, '-') !== false) {//范围
                $ip_range = explode('-', $val);
                if (ip2long($ip_range[0]) * -1 >= ip2long($ip) * -1 && ip2long($ip_range[1]) * -1 <= ip2long($ip) * -1) {
                    $flag = true;
                    break;
                }
            } else {//单个
                if (strpos($val, '*') !== false) {//发现有*号替代符
                    $arr = explode('.', $val);
                    $flag = true;//用于记录循环检测中是否有匹配成功的
                    for ($i = 0; $i < 4; $i++) {
                        if ($arr[$i] != '*') {//不等于* 就要进来检测,如果为*符号替代符就不检查
                            if ($arr[$i] != $ip_pos[$i]) {
                                $flag = false;
                                break;//终止检查本个ip 继续检查下一个ip
                            }
                        }
                    }
                    if ($flag) {//如果是true则终止匹配
                        break;
                    }
                }
            }
        }
        return $flag;
    }
}

阅读全文 »

PHP杂项 自实现getallheaders函数 获取header信息

发表日期:2022-08-06 16:10:41 | 来源: | 分类:PHP杂项

      示例1
if (!function_exists('getallheaders')) {
    /**
     * @return mixed
     * @deprecated 推荐使用request()->header()
     */
    function getallheaders()
    {
        foreach ($_SERVER as $name => $value) {
            if (substr($name, 0, 5) == 'HTTP_') {
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
            }
        }
        return $headers;
    }
}

阅读全文 »

PHP杂项 随机颜色

发表日期:2022-08-06 16:09:53 | 来源: | 分类:PHP杂项

      示例1
function random_color()
{
    $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
    $color = '#' . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)];
    return $color;
}

阅读全文 »

PHP杂项 中文全角半角互转

发表日期:2022-08-06 16:06:03 | 来源: | 分类:PHP杂项

      示例1
/**
 * 半角全角互转
 * @param string $str
 * @param string $args2 0半角到全角 1全角到半角
 * @return string
 **/
function SBC_DBC($str, $args2=0)
{
    $DBC = array(
        '0', '1', '2', '3', '4',
        '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E',
        'F', 'G', 'H', 'I', 'J',
        'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T',
        'U', 'V', 'W', 'X', 'Y',
        'Z', 'a', 'b', 'c', 'd',
        'e', 'f', 'g', 'h', 'i',
        'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's',
        't', 'u', 'v', 'w', 'x',
        'y', 'z', '-', ' ', ':',
        '.', ',', '/', '%', '#',
        '!', '@', '&', '(', ')',
        '<', '>', '"', ''', '?',
        '[', ']', '{', '}', '\',
        '|', '+', '=', '_', '^',
        '¥', ' ̄', '`'
    );
    $SBC = array( //半角
        '0', '1', '2', '3', '4',
        '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E',
        'F', 'G', 'H', 'I', 'J',
        'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T',
        'U', 'V', 'W', 'X', 'Y',
        'Z', 'a', 'b', 'c', 'd',
        'e', 'f', 'g', 'h', 'i',
        'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's',
        't', 'u', 'v', 'w', 'x',
        'y', 'z', '-', ' ', ':',
        '.', ',', '/', '%', '#',
        '!', '@', '&', '(', ')',
        '<', '>', '"', '\'', '?',
        '[', ']', '{', '}', '\\',
        '|', '+', '=', '_', '^',
        '$', '~', '`'
    );
    if ($args2 == 0)
        return str_replace($SBC, $DBC, $str);  //半角到全角
    if ($args2 == 1)
        return str_replace($DBC, $SBC, $str);  //全角到半角
    else
        return false;
}

阅读全文 »

PHP杂项 字符和unicode互转

发表日期:2022-08-06 16:03:20 | 来源: | 分类:PHP杂项

      示例1
/**
 * 将unicode转换成字符
 * @param int $unicode
 * @return string UTF-8字符
 **/
function unicode2Char($unicode)
{
    if ($unicode < 128) return chr($unicode);
    if ($unicode < 2048) return chr(($unicode >> 6) + 192) .
        chr(($unicode & 63) + 128);
    if ($unicode < 65536) return chr(($unicode >> 12) + 224) .
        chr((($unicode >> 6) & 63) + 128) .
        chr(($unicode & 63) + 128);
    if ($unicode < 2097152) return chr(($unicode >> 18) + 240) .
        chr((($unicode >> 12) & 63) + 128) .
        chr((($unicode >> 6) & 63) + 128) .
        chr(($unicode & 63) + 128);
    return false;
}

/**
 * 将字符转换成unicode
 * @param string $char 必须是UTF-8字符
 * @return int
 **/
function char2Unicode($char)
{
    switch (strlen($char)) {
        case 1 :
            return ord($char);
        case 2 :
            return (ord($char{1}) & 63) |
                ((ord($char{0}) & 31) << 6);
        case 3 :
            return (ord($char{2}) & 63) |
                ((ord($char{1}) & 63) << 6) |
                ((ord($char{0}) & 15) << 12);
        case 4 :
            return (ord($char{3}) & 63) |
                ((ord($char{2}) & 63) << 6) |
                ((ord($char{1}) & 63) << 12) |
                ((ord($char{0}) & 7) << 18);
        default :
            trigger_error('Character is not UTF-8!', E_USER_WARNING);
            return false;
    }
}

阅读全文 »

PHP杂项 日期时间友好展示为今天/昨天/前天/分钟/小时/天前

发表日期:2022-08-06 16:00:35 | 来源: | 分类:PHP杂项

      示例1
function datetime_friendly($datetime)
{
    $time = strtotime($datetime);

    $second = time() - $time;
    if ($second < 60) {
        $str = '刚刚';
    } elseif ($second < 60 * 60) {
        $min = floor($second / 60);
        $str = $min . ' 分钟前';
    } elseif ($second < 60 * 60 * 24) {
        $h = floor($second / (60 * 60));
        $str = $h . ' 小时前';
    } elseif ($second < 60 * 60 * 24 * 3) {
        $d = floor($second / (60 * 60 * 24));

        $rtime = date("H:i", $time);

        if ($d == 1)
            $str = '昨天 ' . $rtime;
        else
            $str = '前天 ' . $rtime;
    } elseif ($time > mktime(0, 0, 0, 1, 1, date('Y'))) {
        $str = date("m月d日", $time);
    } else {
        $str = date("Y年m月d日", $time);
    }

    return $str;
}

阅读全文 »

PHP杂项 递归创建多级目录

发表日期:2022-08-06 15:58:05 | 来源: | 分类:PHP杂项

      示例1
/**
 * 检测目录是否存在/创建多级目录
 * @param String $path 目录路径[D:/a/b] or [a/b/c] or [./a/b] or [/a/b/c] or [../../a/b]
 * @return boolean 目录是否存在/多级目录是否创建成功
 */
function quick_make_dirs($path)
{
    if (is_dir($path)) return true;

    $path = str_replace(ROOT_PATH, '', preg_replace('/[\\\|\/]+/', DS, $path));

    $dirs = explode(DS, $path);

    $dir = ROOT_PATH;

    for ($i = 0; $i < count($dirs); $i++) {

        if ($dirs [$i] == '') continue;

        $dir .= $dirs [$i] . DS;

        if (!is_dir($dir)) {
            //mkdir($dir, 0777) or TRIGGER_ERROR("!-目录[$dir]不可写,请手动设置目录权限!");
            if (!mkdir($dir, 0777)) {
                break;
            }

        }
    }

    return is_dir($dir) ? true : false;
}

阅读全文 »

PHP杂项 字符串截取追加...

发表日期:2022-08-06 15:51:11 | 来源: | 分类:PHP杂项

      示例1
/**
 * 字符串截取
 * @param String $str 要截取的字符串
 * @param int $start 开始位置
 * @param int $length 截取长度
 * @param String $ellipsis 省略符
 * @return String 截取后的字符串
 */
function quick_mb_substr($str, $start, $length, $ellipsis = '...')
{
    $str_length = mb_strlen($str, 'utf8');

    if ($str_length <= $start + $length) {
        return mb_substr($str, $start, $str_length - $start, 'utf8');
    }

    return mb_substr($str, $start, $length, 'utf8') . $ellipsis;
}

阅读全文 »

PHP杂项 批量反/转义特殊字符,数据库安全过滤写入,支持字符串、多维数组、对象集合

发表日期:2022-08-06 15:46:30 | 来源: | 分类:PHP杂项

      示例1
/**
 * 批量转义特殊字符
 * '&' (ampersand) becomes '&amp;'
 * '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
 * "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set.
 * '<' (less than) becomes '&lt;'
 * '>' (greater than) becomes '&gt;'
 *
 * @param array|object|string $data
 * @return array|object|string
 * @example
 * $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
 * echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
 *
 */
function encode_special_symbol($data)
{
    if (is_array($data)) {
        foreach ($data as $key => $value) $data [$key] = encode_special_symbol($value);
    } elseif (is_object($data)) {
        foreach ($data as $key => $value) $data->$key = encode_special_symbol($value);
    } else {
        $data = htmlspecialchars(trim($data));
    }
    return $data;
}

/**
 * 批量反转义特殊字符
 * @param $data
 * @return array|string
 */
function decode_special_symbol($data)
{
    if (is_array($data)) {
        foreach ($data as $key => $value) $data [$key] = decode_special_symbol($value);
    } elseif (is_object($data)) {
        foreach ($data as $key => $value) $data->$key = decode_special_symbol($value);
    } else {
        $data = htmlspecialchars_decode($data);
    }
    return $data;
}

阅读全文 »

PHP杂项 压缩HTML,去换行空格,注释

发表日期:2022-08-06 15:43:48 | 来源: | 分类:PHP杂项

      示例1
function quick_compress_html($html)
{
    $html = str_replace(["\r\n", "\n", "\t"], ['', '', ''], $html);
    $_pattern = array("/> *([^ ]*) *</", "/[\s]+/", "/<!--[^!]*-->/", "/\" /", "/ \"/", "'/\*[^*]*\*/'", "/ \/\*[^.]*\*\//");
    $_replace = array(">\\1<", " ", "", "\"", "\"", " ", " ");
    return preg_replace($_pattern, $_replace, $html);
}

阅读全文 »

PHP杂项 获取文章html中的img标签图片src地址

发表日期:2022-08-06 15:42:56 | 来源: | 分类:PHP杂项

      示例1
/**
 * 获取文章中的图片
 * @param $content
 * @return mixed
 */
function html_get_img($content)
{
//    强力模式
//    preg_match_all('#<[img|IMG].*?[src|SRC]=[$"|$\'|$\s]*([^"|^\'|^\s]*)[^>]*>#i', $content, $match);
    preg_match_all('#<[img].*?[src]="([^"]*)[^>]*>#i', $content, $match);
    return $match[1];
}

阅读全文 »

PHP杂项 html过滤标签空格提取纯文本text

发表日期:2022-08-06 15:41:37 | 来源: | 分类:PHP杂项

      示例1
/**
 * html 转换成text 过滤html标签空格
 * @param $html
 * @param null|string $html_tag 要保留的标签
 * @return string
 */
function html2text($html, $html_tag = null)
{
    return trim(preg_replace("/[ ]+/", " ", str_replace(["&nbsp;", " "], " ", strip_tags($html, $html_tag))));
}

阅读全文 »

PHP杂项 自实现http_build_url 函数

发表日期:2022-08-06 15:39:34 | 来源: | 分类:PHP杂项

      示例1
if (!function_exists('http_build_url')) {
    /**
     * 构建URL
     * @param string $url
     * @param array $params
     * @return string
     */
    function http_build_url($url, $params)
    {
        if (!strstr($url, '?')) $url .= "?";

        if (($last = strrchr($url, '&')) && $last !== '&') $url .= "&";

        return $url . http_build_query($params);
    }
}

阅读全文 »

PHP杂项 获取浏览器类型版本及操作系统类型

发表日期:2022-08-06 15:31:18 | 来源: | 分类:PHP杂项

      示例1
class Agent
{

    /**
     * 获取客户端浏览器信息 添加win10 edge浏览器判断
     * @param null
     * @return string
     */
    public static function getBroswer()
    {
        if (isset($_SERVER['HTTP_USER_AGENT']))
        {
            $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串
        }else{
            $sys = '';  //获取用户代理字符串
        }

        if (stripos($sys, "Firefox/") > 0) {
            preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
            $exp[0] = "Firefox";
            $exp[1] = $b[1];  //获取火狐浏览器的版本号
        } elseif (stripos($sys, "Maxthon") > 0) {
            preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
            $exp[0] = "傲游";
            $exp[1] = $aoyou[1];
        } elseif (stripos($sys, "MSIE") > 0) {
            preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
            $exp[0] = "IE";
            $exp[1] = $ie[1];  //获取IE的版本号
        } elseif (stripos($sys, "OPR") > 0) {
            preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
            $exp[0] = "Opera";
            $exp[1] = $opera[1];
        } elseif (stripos($sys, "Edge") > 0) {
            //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
            preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
            $exp[0] = "Edge";
            $exp[1] = $Edge[1];
        } elseif (stripos($sys, "Chrome") > 0) {
            preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
            $exp[0] = "Chrome";
            $exp[1] = $google[1];  //获取google chrome的版本号
        } elseif (stripos($sys, 'rv:') > 0 && stripos($sys, 'Gecko') > 0) {
            preg_match("/rv:([\d\.]+)/", $sys, $IE);
            $exp[0] = "IE";
            $exp[1] = $IE[1];
        } elseif (stripos($sys, 'Safari') > 0) {
            preg_match("/safari\/([^\s]+)/i", $sys, $safari);
            $exp[0] = "Safari";
            $exp[1] = $safari[1];
        } elseif (stripos($sys, 'ApiPOST') !== false) {
            preg_match("/apipost\/([^\s]+)/i", $sys, $ApiPOST);
            $exp[0] = "ApiPOST";
            $exp[1] = "Runtime";
        } elseif (stripos($sys, 'PostmanRuntime') !== false) {
            preg_match("/PostmanRuntime\/([^\s]+)/i", $sys, $Postman);
            $exp[0] = "Postman";
            $exp[1] = $Postman[1];
        } elseif (stripos($sys, 'curl') !== false) {
            preg_match("/curl\/([^\s]+)/i", $sys, $curl);
            $exp[0] = "curl";
            $exp[1] = $curl[1];
        } else {
            $exp[0] = "未知";
            $exp[1] = "";
        }
        return $exp[0] . '(' . $exp[1] . ')';
    }

    /**
     * 获取客户端操作系统信息包括win10
     * @param null
     * @return string
     */
    public static function getOs()
    {
        if (isset($_SERVER['HTTP_USER_AGENT']))
        {
            $agent = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串
        }else{
            $agent = '';  //获取用户代理字符串
        }

        if (preg_match('/Windows Phone/i', $agent)) {
            $os = 'Windows Phone';
//        } else if (preg_match('/win/i', $agent) && strpos($agent, '95')) { 
//            $os = 'Windows 95';
//        } else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')) {
//            $os = 'Windows ME';
//        } else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)) {
//            $os = 'Windows 98';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)) {
            $os = 'Windows Vista';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)) {
            $os = 'Windows 7';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)) {
            $os = 'Windows 8';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)) {
            $os = 'Windows 10';#添加win10判断
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)) {
            $os = 'Windows XP';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)) {
            $os = 'Windows 2000';
        } else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)) {
            $os = 'Windows NT';
        } else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)) {
            $os = 'Windows 32';
        } else if (preg_match('/linux/i', $agent)) {
            $os = 'Linux';
        } else if (preg_match('/unix/i', $agent)) {
            $os = 'Unix';
        } else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)) {
            $os = 'SunOS';
        } else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)) {
            $os = 'IBM OS/2';
        } else if (preg_match('/Mac/i', $agent)) {
            $os = 'Mac';
        } else if (preg_match('/PowerPC/i', $agent)) {
            $os = 'PowerPC';
        } else if (preg_match('/AIX/i', $agent)) {
            $os = 'AIX';
        } else if (preg_match('/HPUX/i', $agent)) {
            $os = 'HPUX';
        } else if (preg_match('/NetBSD/i', $agent)) {
            $os = 'NetBSD';
        } else if (preg_match('/BSD/i', $agent)) {
            $os = 'BSD';
        } else if (preg_match('/OSF1/i', $agent)) {
            $os = 'OSF1';
        } else if (preg_match('/IRIX/i', $agent)) {
            $os = 'IRIX';
        } else if (preg_match('/FreeBSD/i', $agent)) {
            $os = 'FreeBSD';
        } else if (preg_match('/teleport/i', $agent)) {
            $os = 'teleport';
        } else if (preg_match('/flashget/i', $agent)) {
            $os = 'flashget';
        } else if (preg_match('/webzip/i', $agent)) {
            $os = 'webzip';
        } else if (preg_match('/offline/i', $agent)) {
            $os = 'offline';
        } elseif (preg_match('/ucweb|MQQBrowser|J2ME|IUC|3GW100|LG-MMS|i60|Motorola|MAUI|m9|ME860|maui|C8500|gt|k-touch|X8|htc|GT-S5660|UNTRUSTED|SCH|tianyu|lenovo|SAMSUNG/i', $agent)) {
            $os = 'mobile';
        } else {
            $os = '未知';
        }
        return $os;
    }
}

阅读全文 »

PHP杂项 curl请求及注意事项

发表日期:2022-08-06 15:26:25 | 来源: | 分类:PHP杂项

      示例1
    function post($data, $url)
    {

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);//连接超时时间
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);//请求超时时间
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, true);//POST请求
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        
        //设置header头信息
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json; charset=utf-8',//json请求
            'token:vXBrUZ7rWE5D4P4ENnwR6GFvaG2pVgul'//比如登录信息/token信息/session信息
        ]);

        $output = curl_exec($ch);

        if ($error_code = curl_errno($ch)) { //已经检查是否报错做进一步处理
            $err = $error_code . ' : ' . curl_error($ch);
            curl_close($ch);
            throw new Exception($err);
        }

        curl_close($ch);
        return $output;
    }

阅读全文 »

PHP杂项 二维数组排序

发表日期:2022-08-06 15:15:16 | 来源: | 分类:PHP杂项

      示例1
/**
 * 升序降序排序
 * @param $arr
 * @param $keys 要排序的字段
 * @param string $type asc desc
 * @return array
 */
function array_sort($arr, $keys, $type = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }
    if ($type == 'asc') {
        asort($keysvalue);
    } else {
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

阅读全文 »

PHP杂项 文件字节大小换算KB、MB、GB、TB

发表日期:2022-08-06 15:11:53 | 来源: | 分类:PHP杂项

      示例1
/**
 * 字节换算
 * @param int $size 字节长度
 * @param int $digits 要保留几位小数
 * @return string 转换后的文件大小
 */
function byteToSize($size, $digits = 2)
{
    if ($size == 0) return '0B';
    $unit = array('', 'K', 'M', 'G', 'T', 'P');
    // 单位数组,是必须1024进制依次的哦。
    $base = 1024;
    // 对数的基数
    $i = floor(log($size, $base));
    // 字节数对1024取对数,值向下取整。 return
    return round($size / pow($base, $i), $digits) . ' ' . $unit [$i] . 'B';
}

阅读全文 »

PHP杂项 数字金额转汉字大写

发表日期:2022-08-06 15:10:20 | 来源: | 分类:PHP杂项

      示例1
function amountToCn($num)
{
    $Decimal = $num - (int)$num;

    $c1 = "零壹贰叁肆伍陆柒捌玖";
    $c2 = "分角元拾佰仟万拾佰仟亿";
    //精确到分后面就不要了,所以只留两个小数位
    $num = round($num, 2);
    //将数字转化为整数
    $num = $num * 100;
    if (strlen($num) > 10) {
        return "金额太大,请检查";
    }
    $i = 0;
    $c = "";
    while (1) {
        if ($i == 0) {
            //获取最后一位数字
            $n = substr($num, strlen($num) - 1, 1);
        } else {
            $n = $num % 10;
        }
        //每次将最后一位数字转化为中文
        $p1 = substr($c1, 3 * $n, 3);
        $p2 = substr($c2, 3 * $i, 3);
        if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
            $c = $p1 . $p2 . $c;
        } else {
            $c = $p1 . $c;
        }
        $i = $i + 1;
        //去掉数字最后一位了
        $num = $num / 10;
        $num = (int)$num;
        //结束循环
        if ($num == 0) {
            break;
        }
    }
    $j = 0;
    $slen = strlen($c);
    while ($j < $slen) {
        //utf8一个汉字相当3个字符
        $m = substr($c, $j, 6);
        //处理数字中很多0的情况,每次循环去掉一个汉字“零”
        if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
            $left = substr($c, 0, $j);
            $right = substr($c, $j + 3);
            $c = $left . $right;
            $j = $j - 3;
            $slen = $slen - 3;
        }
        $j = $j + 3;
    }
    //这个是为了去掉类似23.0中最后一个“零”字
    if (substr($c, strlen($c) - 3, 3) == '零') {
        $c = substr($c, 0, strlen($c) - 3);
    }
    //将处理的汉字加上“整”
    if (empty($c)) {
        return "零元整";
    } else {
        if ($Decimal > 0){
            return $c ;
        }

        return $c . "整";
    }
}

阅读全文 »

PHP杂项 验证身份证号是否有效

发表日期:2022-08-06 15:05:56 | 来源: | 分类:PHP杂项

      示例1
public function isIdCard($id)
{
    $id = strtoupper($id);
    $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
    $arr_split = array();
    if (!preg_match($regx, $id)) {
        return FALSE;
    }
    if (15 == strlen($id)) //检查15位
    {
        $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
        @preg_match($regx, $id, $arr_split);
        //检查生日日期是否正确
        $dtm_birth = "19" . $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
        if (!strtotime($dtm_birth)) {
            return FALSE;
        } else {
            return TRUE;
        }
    } else      //检查18位
    {
        $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
        @preg_match($regx, $id, $arr_split);
        $dtm_birth = $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
        if (!strtotime($dtm_birth)) //检查生日日期是否正确
        {
            return FALSE;
        } else {
            //检验18位身份证的校验码是否正确。
            //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
            $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
            $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
            $sign = 0;
            for ($i = 0; $i < 17; $i++) {
                $b = (int)$id{$i};
                $w = $arr_int[$i];
                $sign += $b * $w;
            }
            $n = $sign % 11;
            $val_num = $arr_ch[$n];
            if ($val_num != substr($id, 17, 1)) {
                return FALSE;
            }
            else {
                return TRUE;
            }
        }
    }
}

阅读全文 »

全部博文(1580)
集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。