function getSukNum($code='',$max=999,$default_char='AAA'){
$char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = $default_char.str_pad(1,strlen($max),0,STR_PAD_LEFT);
if (!empty($code)){
//拆分字符串中的字母和数字
list($data_char, $data_num) = preg_split("/([a-zA-Z]+)/", strtoupper($code), 0,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$data_num = intval($data_num);
//数字小于最大值时 +1
if ($data_num<$max){
$result = $data_char.str_pad($data_num+1,strlen($max),0,STR_PAD_LEFT);
}else{
#最字母进行处理进一位
$data_char = getSukCharNext($data_char,$char);
$result = $data_char.str_pad(1,strlen($max),0,STR_PAD_LEFT);
}
}
return $result;
}
function getSukCharNext($data_char,$char){
$char_len = strlen($data_char);//
$char_first = substr($char,0,1);//获取第一位字母
$char_end = substr($char,-1);//获取最后一位字母
$char_data = str_split($data_char);//将字符串拆分成数组
for($i=$char_len-1;$i>=0;$i--){
if ($char_data[$i]!=$char_end){
$char_data[$i] = substr($char,strpos($char,$char_data[$i])+1,1);//获取字母表中下一个字母
break;
}else{
$char_data[$i] = $char_first;
$char_data[$i-1] = substr($char,strpos($char,$char_data[$i-1])+1,1);//获取字母表中下一个字母
break;
}
}
return join($char_data);
}
getSukNum('AZA03',99)