gracias por la respuesta lo intentado multiplicando dividiendo y nada XD
esta es la que mejor me va pero en 25000 consultas hay algunas que coinciden XC
Código PHP:
public static function barcode_gen_ean_sum($ean){
$even=true; $esum=0; $osum=0;
for ($i=strlen($ean)-1;$i>=0;$i--){
if ($even) $esum+=$ean[$i]; else $osum+=$ean[$i];
$even=!$even;
}
return (10-((3*$esum+$osum)%10))%10;
}
public static function reference_encode($name){
$l = strlen($name);
$b = str_split(preg_replace('/[^A-Z a-z ._ ]/', "", $name));
$num = preg_replace('/[^0-9]/', "", $name);
$ncon =0;
for($i=0; $i<count($b); $i++){
$ch =(int)ord($b[$i]);
$ncon+=$ch*$i;
}
$st = self::barcode_gen_ean_sum($num)+self::barcode_gen_ean_sum($ncon);
$ncon +=$num;
$ncon +=$num;
$ncon .=$st;
$ncon .=$l;
return round($ncon);
}