4 if (!defined('_ECRIRE_INC_VERSION')) {
9 * Validation d'un SIREN ou d'un SIRET
11 * 1/ Un SIREN comporte STRICTEMENT 9 caractères
12 * 1b/ Un SIRET comporte strictement 14 caractères
13 * 2/ Un siren/siret utilise une clef de controle "1-2"
14 * Un siren/siret est donc valide si la somme des chiffres pairs
15 * + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10
17 * @param string $valeur
18 * La valeur à vérifier.
19 * @param array $options
20 * Indique s'il faut tester le SIREN ou le SIRET.
22 * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
24 function verifier_siren_siret_dist($valeur, $options = array()) {
25 if (!$options['mode'] or !in_array($options['mode'], array('siren', 'siret'))) {
28 $mode = $options['mode'];
31 // on supprime les espaces avant d'effectuer les tests
32 $valeur = preg_replace('/\s/', '', $valeur);
35 if ($mode == 'siren') {
36 $erreur = _T('verifier:erreur_siren');
37 if (!is_string($valeur)) {
41 // Si pas 9 caractère, c'est déjà foiré !
42 if (!preg_match('/^[0-9]{9}$/', $valeur)) {
46 // On vérifie la clef de controle "1-2"
48 $i = 0; // Les impaires
50 $somme +
= $valeur[$i];
53 $i = 1; // Les paires !
55 if ((2*$valeur[$i])>9) {
56 $somme +
= (2*$valeur[$i])-9;
58 $somme +
= 2*$valeur[$i];
68 $erreur = _T('verifier:erreur_siret');
69 if (!is_string($valeur)) {
73 // Si pas 14 caractère, c'est déjà foiré !
74 if (!preg_match('/^[0-9]{14}$/', $valeur)) {
77 if (preg_match('/[0]{8}/', $valeur)) {
81 // Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2
82 // (vs pairs*2 pour SIREN, parce qu'on part de la fin)
86 $somme +
= $valeur[$i];
89 $i = 0; // Les impaires !
91 if ((2*$valeur[$i])>9) {
92 $somme +
= (2*$valeur[$i])-9;
94 $somme +
= 2*$valeur[$i];