<?php
$accountNumber = '3883B';
$strNewAcctNum = '';
$strCode1 = '-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$strCode2 = 'TMGKRLMKFDPRSKVQXZBSKLKVWSXMSDLHQPFVP';
$iKeyLen = strlen($strCode2);
//Step 1 - take the last 4 characters and the first 4 characters and pad with zeros
//FAL 2008-05-02 for account numbers that are less than 4 characters, the below was returning as null as opposed to all N characters.
//$strTempAcctNum = substr($accountNumber,-4);
$strTempAcctNum = strrev(substr(strrev($accountNumber),0,4));
$strTempAcctNum .= substr($accountNumber,0,4);
$strTempAcctNum = substr($strTempAcctNum.'00000000',0,8);
$sumPos = 0;
//now loop through each character and replace with a new character from the Code2 string
for ($i = 0; $i < strlen($strTempAcctNum); $i++) {
$strChar = substr($strTempAcctNum,$i,1);
$pos = strpos($strCode1, $strChar);
if ($pos === false)
$pos= 0;
$pos = ($pos + $i * 13 ) % $iKeyLen;
$sumPos += $pos;
$strNewChar = substr($strCode2,$pos,1);
$strNewAcctNum.=$strNewChar ;
}
echo $strNewAcctNum. substr($strCode2, $sumPos % $iKeyLen,1);
//VRSGFXGPG