58 lines
1.4 KiB
PHP
58 lines
1.4 KiB
PHP
|
<?php
|
||
|
class Siren
|
||
|
{
|
||
|
public function __construct(){}
|
||
|
|
||
|
public function valide($siret)
|
||
|
{
|
||
|
$siren = substr($siret, 0, 9);
|
||
|
$nic = null;
|
||
|
if (strlen($siret)==14)
|
||
|
$nic = substr($siret, 9, 5);
|
||
|
|
||
|
if (empty($nic)) {
|
||
|
$somme=0;
|
||
|
for ($i=0; $i<=8; $i+=2) // Traitement IMPAIR
|
||
|
$somme+=(integer)substr($siren,$i,1);
|
||
|
|
||
|
for ($i=1; $i<=7; $i+=2)
|
||
|
{ // Traitement PAIR
|
||
|
$var_tmp=(string)(2*((integer)substr($siren,$i,1)));
|
||
|
$som_tmp=0;
|
||
|
for($j=0;$j<strlen($var_tmp);$j++)
|
||
|
$som_tmp+=(integer)substr($var_tmp,$j,1);
|
||
|
$somme+=$som_tmp;
|
||
|
}
|
||
|
|
||
|
if ((integer)($somme/10)!=($somme/10))
|
||
|
{ // Le Siren est faux
|
||
|
if (substr($siren,0,3)!='200') // Les siren débutant par 200 sont toujours valides (sirens provisoires de la BDF?!)
|
||
|
return false;
|
||
|
}
|
||
|
} else {
|
||
|
$SIRET=$siren.$nic;
|
||
|
$somme=0;
|
||
|
for ($i=0; $i<=12; $i+=2)
|
||
|
{ // Traitement PAIR
|
||
|
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
|
||
|
$som_tmp=0;
|
||
|
for($j=0;$j<strlen($var_tmp);$j++)
|
||
|
$som_tmp+=(integer)substr($var_tmp,$j,1);
|
||
|
$somme+=$som_tmp;
|
||
|
}
|
||
|
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
|
||
|
$somme+=(integer)substr($SIRET,$i,1);
|
||
|
|
||
|
if ((integer)($somme/10)!=($somme/10))// Le Siret est faux
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public function exist($siren)
|
||
|
{
|
||
|
require_once 'Scores/WsScores.php';
|
||
|
$ws = new WsScores();
|
||
|
return $ws->isSirenExistant($siren);
|
||
|
}
|
||
|
}
|