Il est très simple de vérifier un numéro SIREN / SIRET / TVA.
Mais pour commencer, de quoi sont composés ces numéros ?
SIREN
Le SIREN est un identifiant unique pour chaque entreprise française. Il est constitué de 9 chiffres : 8 chiffres pour l’identification, et un chiffre de contrôle à la fin.
Ex : 443 061 841
SIRET
Le SIRET est composé du SIREN plus un identifiant d’établissement sur 4 chiffres (dans le cas d’une entreprise avec plusieurs lieux d’exercice ou en cas de déménagement) et encore une fois un chiffre de contrôle ; pour un total de 14 chiffres.
Ex : 443 061 841 00039
N° TVA
Le numéro de TVA intracommunautaire délivré en France est composé des initiales FR, d’une clé de contrôle à 2 chiffres, et du SIREN de l’entreprise.
Ex: FR64443061841
Valider ces numéros en PHP
Pour le SIREN et le SIRET on utilise la <a title="Formule de Luhn" href="http://fr.wikipedia.org/wiki/Luhn » target= »_blank »>formule de Luhn (wikipedia).
Voici un exemple en PHP. :
- on part du SIRET (le plus complet, établissement inclus)
- on vérifie le SIRET avec sa clé
- on détermine le SIREN
- on vérifie le SIREN avec sa clé
- on détermine le n°TVA
// SIRET de Google France $siret = "443 061 841 00039"; // On ne garde que les chiffres $siret = preg_replace("/[^d]+/", '', $siret); // SIRET print "SIRET : " . $siret; if(checkLuhn($siret)) print " OK
"; else print " NOK
"; // SIREN print "SIREN : " . $siren = nSIREN($siret); if(checkLuhn($siren)) print " OK
"; else print " NOK
"; // N° TVA print "N° TVA : " . nTVA($siren) . "
"; // Vérification avec la méthode de Luhn function checkLuhn($val) { $len = strlen($val); $total = 0; for ($i = 1; $i = 10) $total -= 9; } else $total += $chiffre; } if($total % 10 == 0) return true; else return false; } // SIREN = 9 premiers chiffres du SIRET function nSIREN($siret) { return substr($siret,0,9); } // N°TVA = FR + clé + SIREN function nTVA($siren) { return "FR" . (( 12 + 3 * ( $siren % 97 ) ) % 97 ) . $siren; }
Dans l’état devrait afficher :
SIRET : 44306184100039 OK
SIREN : 443061841 OK
N° TVA : FR64443061841
Bonjour,
Merci bcp pour ce petit partage de code qui m’a fait gagner bcp de temps.
Cordialement,
./Frédéric