Segue abaixo o núcleo da lógica de cálculo de id padrão tamanho 15 do Sales Force para padrão de tamanho 18.
//Aceita id do Sales Force padrão 15 ou 18 de tamanho e retorna sempre o padrão 18 function padrao_id_18_sales_force( $id ){ if(strlen($id) == 18){ return $id; } $suffix = ''; for ($i = 0; $i < 3; $i++) { $flags = 0; for ($j = 0; $j < 5; $j++) { $c = substr($id, $i * 5 + $j,1); //Only add to flags if c is an uppercase letter: if( strtoupper($c) == $c && $c >= 'A' && $c <= 'Z' ){ $flags = $flags + (1 << $j); } } $suffix = $suffix . substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ012345',$flags, 1); } return $id.$suffix; }