域名品相分析 - 分析域名是否 数字 字母 拼音 几拼 杂米

该博客主要探讨了如何通过编程计算不同类型的域名,包括纯数字、纯字母、纯声母、拼音以及杂米域名,并提供了相应的匹配和判断逻辑。示例中列举了多个域名实例进行分类解析,展示了对顶级域名的判断和不同字符类型的识别方法。
摘要由CSDN通过智能技术生成

举例:

111.com 三位数字
jmkj.com 四位纯声母
jmkjabc.com 7位字母
xian.com 单拼
xianguang.com 两拼
a1a2.com 杂米

计算方法以跑通为主,没有做封装,需要的可以根据需求自己封装下,有更好的计算方式欢迎共同交流。

$domains = [
    '111.com',
    'jmkj.com',
    'jmkjabc.com',
    'xian.com',
    'xianguang.com',
    'a1a2.com',
    'zhf.com',
    'bpm.com'
];
foreach ( $domains as $domain){

    $main_domain = explode('.', $domain);

    //域名中包含两个以上小数点
    //排除非顶级域名的影响
    //比如 1.3e3.com  123.a.com
    if (count($main_domain) != 2) {
        echo "域名 {$domain} 非顶级域名"."<br />";
        continue;
    }

    if (is_numeric($main_domain[0])) {
        //纯数字
        echo "域名 {$domain} 属于:" . strlen($main_domain[0]) . "位数字";
    } elseif (ctype_alpha($main_domain[0])) {
        //纯字母

        //检查是否为纯声母

        //声母
        $initial_consonant = [
            ['b', 'p', 'm', 'f', 'd', 't', 'n', 'l', 'g', 'k', 'h', 'j', 'q', 'x', 'r', 'z', 'c', 's', 'y', 'w'],
            ['zh', 'ch', 'sh'],
        ];

        $item = $main_domain[0];
        $len = strlen($main_domain[0]);
        $temp_arr = [];

        while ($len != 0) {
            $tmp_str = mb_substr($item, 0, $len);
            if (isset($initial_consonant[strlen($tmp_str)-1]) && in_array($tmp_str, $initial_consonant[strlen($tmp_str)-1])) {
                array_push($temp_arr, $tmp_str);
                if (strlen($tmp_str) == strlen($item)){
                    break;
                }

                //清除已匹配
                $item = mb_substr($item, strlen($tmp_str));
                $len = strlen($item);
                continue;
            }
            $len--;
        }

        if (implode('', $temp_arr) == $main_domain[0]) {
            echo "域名 {$domain} 属于:". count($temp_arr) ."位纯声母". "<br />";
            continue;
        }

        //检查是否为拼音
        //韵母字典 + 三拼音节
        $compound = [
            ['a', 'o', 'e', 'i', 'u'],
            ['ai', 'ei', 'ui', 'ao', 'ou', 'iu', 'ie', 've', 'er', 'an', 'en', 'in', 'un', 'vn', 'ia', 'ua', 'uo'],
            ['ang', 'eng', 'ing', 'ong', 'ian', 'iao', 'uai', 'uan', 'uan'],
            ['iang', 'iong', 'uang']
        ];

        //组合
        $list = [];
        foreach ($initial_consonant as $item){
            foreach ($item as $key => $value){
                foreach ($compound as $row){
                    foreach ($row as $k => $v){
                        $list[strlen($value.$v)][] = $value.$v;
                    }
                }
            }
        }

        //进行匹配
        $temp_arr = [];
        $item = $main_domain[0];
        $len = strlen($item);

        while ($len != 0) {
            $tmp_str = mb_substr($item, -$len);
            if (isset($list[strlen($tmp_str)]) && in_array($tmp_str, $list[strlen($tmp_str)])) {
                array_unshift($temp_arr, $tmp_str);

                //清除已匹配
                $item = mb_substr($item, 0, strlen($item)-$len);
                $len = strlen($item);
                continue;
            }
            $len--;
        }

        if (implode('', $temp_arr) == $main_domain[0]) {
            echo "域名 {$domain} 属于:".count($temp_arr)."拼";
        }else{
            echo "域名 {$domain} 属于:".strlen($main_domain[0])."位纯字母";
        }
    } elseif (ctype_alnum($main_domain[0])) {
        //字母+数字
        echo "域名 {$domain} 属于:杂米";
    }

    echo "<br />";
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值