DedeCMS模板中随机生成几组数字字母组合

DedeCMS模板中随机生成几组数字字母组合,由于网站内容页需要,所以设计此组合方式,首先打开文件:/include/extend.func.php,在代码的底部加入如下代码:

//随机生成车牌号码
function generateLicensePlate($prefix) {
    // 排除i和o字母
    $letters = array_merge(range('A', 'H'), range('J', 'N'), range('P', 'Z'));
    $numbers = range(0, 9);
    
    $plates = array();
    
    for ($i = 0; $i < 5; $i++) {
        $type = $i % 3; // 轮流使用3种生成方式
        
        switch ($type) {
            case 0: // 5位全数字
                shuffle($numbers);
                $plate = implode('', array_slice($numbers, 0, 5));
                break;
                
            case 1: // 前1-2字母+后3位数字
                $letterCount = rand(1, 2);
                shuffle($letters);
                $letterPart = implode('', array_slice($letters, 0, $letterCount));
                
                shuffle($numbers);
                $numberPart = implode('', array_slice($numbers, 0, 5 - $letterCount));
                
                $plate = $letterPart . $numberPart;
                break;
                
            case 2: // 第一位数字+后4位(1-2字母+数字)
                shuffle($numbers);
                $firstDigit = $numbers[0];
                
                $letterCount = rand(1, 2);
                shuffle($letters);
                $letterPart = implode('', array_slice($letters, 0, $letterCount));
                
                shuffle($numbers);
                $numberPart = implode('', array_slice($numbers, 0, 4 - $letterCount));
                
                $plate = $firstDigit . $letterPart . $numberPart;
                break;
        }
        
        $plates[] = $prefix . $plate;
    }
    
    return $plates;
}

然后在模板中加入如下代码(默认是标题+数字组合,如果不需要标题删除即可。):

    {dede:php}
    $title = $refObj->Fields['title'];
    $plates = generateLicensePlate($title);
    echo implode("、", $plates);
    {/dede:php}