Вы можете использовать substr для разделения идентификатора, dechex и hexdec для преобразования в / из десятичного в шестнадцатеричное, что дает вам часть A + 3 = D, и вы можете использовать str_pad для переднего края целого числа с нулями, что дает ты вторая часть, а потом просто конкатенируешь их.
ETA: Примерно так:
$id = 'AA00001';
$first = dechex((hexdec(substr($id,0,1))+3)%16);
$secnd = dechex((hexdec(substr($id,1,1))+5)%16);
$int = str_pad(substr($id,2)+1,5,"0",STR_PAD_LEFT);
$newid = strtoupper($first.$secnd.$int);
ETA2: Если вы не хотели идти AA00001, DF00002, GK00003, JP00004, MU00005, PZ00006, SE00007 и т. Д., В этом случае вам нужно
$first = chr(((ord(substr($id,0,1))-62)%26)+65);
$secnd = chr(((ord(substr($id,1,1))-60)%26)+65);