| Conditions | 7 |
| Paths | 7 |
| Total Lines | 31 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | <?php |
||
| 25 | public static function validate($insee, $length = 9) |
||
| 26 | { |
||
| 27 | if (!is_numeric($insee)) { |
||
| 28 | return false; |
||
| 29 | } |
||
| 30 | |||
| 31 | if (strlen($insee) != $length) { |
||
| 32 | return false; |
||
| 33 | } |
||
| 34 | |||
| 35 | /** |
||
| 36 | * La poste support (French mail company) |
||
| 37 | * @link https://fr.wikipedia.org/wiki/SIRET#Calcul_et_validit%C3%A9_d'un_num%C3%A9ro_SIRET |
||
| 38 | * @link https://blog.pagesd.info/2012/09/05/verifier-numero-siret-poste/ |
||
| 39 | */ |
||
| 40 | $laPosteSiren = '356000000'; |
||
| 41 | if(strpos($insee, $laPosteSiren) === 0){ |
||
| 42 | return $laPosteSiren === (string) $insee ? true : array_sum(str_split($insee)) % 5 === 0; |
||
| 43 | } |
||
| 44 | |||
| 45 | $sum = 0; |
||
| 46 | for ($i = 0; $i < $length; ++$i) { |
||
| 47 | $indice = ($length - $i); |
||
| 48 | $tmp = (2 - ($indice % 2)) * $insee[$i]; |
||
| 49 | if ($tmp >= 10) { |
||
| 50 | $tmp -= 9; |
||
| 51 | } |
||
| 52 | $sum += $tmp; |
||
| 53 | } |
||
| 54 | return ($sum % 10) == 0; |
||
| 55 | } |
||
| 56 | } |
||
| 57 |