-
-
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; | |
} |
Renvoie true si on passe "00000000000", une idée pour renforcer le contrôle ?
Après vérification je confirme que c'est bien un numéro valide selon Scolarix, et qu'il peut être utilisé, malgré les apparences.
Bonjour
Savez vous comment calculer les nouveaux INE avec 2 modulo ?
Bonjour
Savez vous comment calculer les nouveaux INE avec 2 modulo ?
Hello, je ne travaille plus dans le milieu donc je ne peux pas aider désolé.
Bonjour
Les nouveaux INE ont aussi 11 caractères :
1er et 2ème : Année de codification de l'élève (le plus souvent année d'entrée en maternelle ou "15" ou plus pour les élèves du second degré scolarisés à partir de 2015-2016 qui n'avaient pas d'INE du 1er degré).
3ème à 9ème : numéro d’ordre
10ème et 11ème : 2 lettres de clé de contrôle
La clé est calculée à partir du modulo 97 du nombre formé par les 9 premiers caractères :
KH si multiple de 97 (reste =0)
KG si reste =1
etc... en utilisant 10 lettres de A à K (sauf i ), de AB à KH en ordre inversé.
...
KA si reste=7
JK si reste=8
JJ si reste=9
JH si reste=10
...
JA si reste=17
...
HA si reste=27
...
AC si reste =95
AB si reste=96
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 !
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..
C'est un numéro valide selon la vérification Scolarix… Je me renseigne pour voir si j'arrive à obtenir des spécifications plus précises, mais pas sûr qu'il y en ait…