<?php function valideSiren($siren, $nic='', $erreur=false) { $lenSIREN=strlen($siren); if (!valideData($siren, 9, 9,'N')) //Siren non précisé ou incorrect. return $erreur; else { if (!isset($nic) || trim($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 $erreur; } } else { if (!valideData($nic,1,5,'N')) // Nic de format incorrect. return $erreur; $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 $erreur; } } return true; } function replace_siren($matches) { $client = new SoapClient(null, array( 'trace' => 1, 'soap_version' => SOAP_1_1, 'location' => WEBSERVICE_URL, 'uri' => WEBSERVICE_URI, 'login' => $_SESSION['tabInfo']['login'], 'password' => $_SESSION['tabInfo']['password'])); foreach ($matches as $i=>$sirenBrut) { $siren=strtr($sirenBrut, array(' '=>'', '.'=>'', '-'=>'')); if (strlen($sirenBrut)==9) $sirenBrut=implode(' ', str_split($sirenBrut, 3)); if (valideSiren($siren)) { try { $O = $client->isSirenExistant($siren); } catch (SoapFault $fault) { return $sirenBrut; } if ($O>0) { return '<a href="/?page=identite&siret='.$siren.'" title="Voir la fiche d\'identité de cette entreprise">'.$sirenBrut.'</a>'; } } return $sirenBrut; } } ?>