-
-
Save bohwaz/e14df1e88e9e06aa3857e8b6f1181bf9 to your computer and use it in GitHub Desktop.
<?php | |
// Licence : domaine public ou WTFPL | |
// 2018 BohwaZ <http://bohwaz.net/> | |
function check_ine($ine) | |
{ | |
if (!function_exists('bcmod')) | |
{ | |
throw new \LogicException('bcmath is required'); | |
} | |
$ine = strtoupper(trim($ine)); | |
if (strlen($ine) != 11) | |
{ | |
return false; | |
} | |
// Numéro INE/BEA | |
// format AABBNNNNNNM | |
// AA = Académie, BB = Année, NNNNNN = Numéro (préfixé par D si provisoire), M = modulo 23 | |
if (preg_match('!^(\d\d)(\d\d)([A-Z\d]{6})([A-Z])$!', $ine, $match)) | |
{ | |
list(, $academie, $annee, $numero, $modulo) = $match; | |
// Numéro INE provisoire | |
$provisoire = substr($numero, 0, 1) == 'D'; | |
// Académie 00 (international) n'accepte pas de numéro provisoire | |
if ($academie == '00' && $provisoire) | |
{ | |
return false; | |
} | |
// Liste des académies | |
// 00 International | |
// 01-28 Paris-Réunion | |
// 31-33, 41-44 DOM-TOM | |
// 80 INAA | |
static $liste_academies = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', | |
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, | |
31, 32, 33, 40, 41, 42, 43, 44, 50, 51, 59, 80, 99]; | |
if (!in_array($academie, $liste_academies)) | |
{ | |
return false; | |
} | |
// Année >= 90 OU Année <= (Année courante sur 2 chiffres) | |
if ($annee < 90 && $annee > date('y')) | |
{ | |
return false; | |
} | |
// Lettres I, O et Q ne sont pas utilisées | |
$lettres = array_flip(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', /*'I', */ | |
'J', 'K', 'L', 'M', 'N', /*'O'*/ 'P', /*'Q'*/ 'R', 'S', 'T', 'U', | |
'V', 'W', 'X', 'Y', 'Z']); | |
// Remplacement | |
$numero = strtr($numero, $lettres); | |
$modulo = $lettres[$modulo]; | |
$check = bcmod($academie . $annee . $numero, 23); | |
if ($check == $modulo) | |
{ | |
return true; | |
} | |
} | |
// Numéro INE établissement enseignement supérieur | |
// (Cocktail/Scolarix/APOGEE) | |
// AAAAABCCCCM | |
// AAAAA = code établissement base 36 (code UAI) | |
// B = numéro année base 36 | |
// CCCC = numéro d'ordre étudiant base 36 | |
// M = modulo 10 base 10 | |
if (preg_match('!^[A-Z\d]{10}\d$!', $ine, $match)) | |
{ | |
//$etablissement = base_convert(substr($ine, 0, 5), 36, 10); | |
//$annee = 1990 + base_convert(substr($ine, 5, 1), 36, 10); | |
//$numero = base_convert(substr($ine, 6, 4), 36, 10); | |
$modulo = substr($ine, -1); | |
$ine = base_convert(substr($ine, 0, 10), 36, 10); | |
$check = bcmod($ine, 10); | |
if ($modulo == $check) | |
{ | |
return true; | |
} | |
} | |
return false; | |
} |
Bonjour,
Il ne faut pas confondre numéro RNIE et numéro INE (BEA) :
Numéros RNIE
Le format RNIE (9 entiers suivis de 2 lettres) :
- Les deux premiers caractères sont les deux derniers chiffres de l'année d'immatriculation : doit être un nombre supérieur ou égal à 18 (année des premières immatriculations) et inférieur ou égal à l'année en cours
- Les sept caractères suivants doivent être entiers ;
- Les deux caractères suivants doivent être des caractères alphabétiques.
Numéros INE (Etablissement d'enseignement supérieur)
Le n° INE ("Identifiant National d'Etudiant") ou BEA (Base élèves académique), codé sur 11 caractères et dont la structure est stricte :
Chaque numéro est composé de 11 caractères, répartis ainsi :
- 10 caractères pour le "matricule de l'étudiant" :
- 5 caractères : code "UAI" de l'établissement (7 caractères numériques ; on ne prend pas en compte la clé alphanumérique) converti en base 36 ;
- 1 caractère : un n° de série, représenté par une lettre variant chaque année scolaire (par exemple : la lettre K pour l’année scolaire 2010-2011) ; ces 6 premiers caractères sont la "clé de l'établissement" dans le n° INE ;
- 4 caractères : un n° d'ordre pour l'apprenant, calculé en base 10, puis exprimé en base 36 et formaté sur 4 caractères, avec des 0 à gauche ;
- 1 caractère qui sert de clé de contrôle : le chiffre des unités du matricule qui vient d'être calculé, retranscrit en base 10.
Cette clé est toujours égale au chiffre de l'unité de la somme "Clé de l'établissement" retranscrit en base 10 + le n° d'ordre de l'apprenant resté en base 10 (donc avant sa transformation ci-dessus en base 36).
Un service ministérielle permet de vérifier le n° INE : https://ines.enseignementsup-recherche.gouv.fr
Uniquement accessible sur login / mot de passe.
Bonjour, désolé de vous déranger !
Je souhaite savoir si ils existent des documents qui expliquent le formatage des nouveaux INE ?
Après avoir recherché scrupuleusement dans de dizaines de pages de recherche sur Google, je ne trouve malheusement rien.
J'espère que l'un d'entre nous pourra nous éclaircir sur les INE..
Bonjour,
Vous auriez, s'il vous plaît, un document du ministère ou d'une académie qui explique le détail du formatage ? ou le sauriez-vous vous même?
les 7 caractères du milieu, c'est juste un nombre qui s'incrémente et qui couvre toute la France ? plus de découpage par académie ?
Vous êtes sûr du calcul modulo 97 ?
Nous sommes d'accord que ça ne cadre pas avec l'algorithme de @bohwaz , qui pourtant, traite bien dans sa première partie des INE avec deux caractères en fin de chaîne ?
Merci de vos réponses !