$ranges) { $len_code = strlen($code); if ($code == ${"sTmp".$len_code}) { $seg1 = $code; break; } } } if ($seg1==="") { $seg1 = $sTmp5; } $isbn = preg_replace("/^$seg1/", '', $isbn); // calcul du segment de l'éditeur $seg2=$isbn; if (isset($array_isbn_ranges[$seggBis][$seg1])) { foreach($array_isbn_ranges[$seggBis][$seg1] as $motif){ $tmpRange=explode("-",$motif); $strlen=strlen($tmpRange[0]); $sTmp = substr($isbn, 0, $strlen) - 0; if(($sTmp>=(int)$tmpRange[0])&&($sTmp<=(int)$tmpRange[1])){ $seg2 = substr($isbn, 0, $strlen); break; } } } $isbn = preg_replace("/^$seg2/", '', $isbn); $key = $isbn[strlen($isbn) - 1]; $seg3 = substr($isbn, 0, strlen($isbn) - 1); $isbn = ($segg?$segg."-":"")."$seg1-$seg2-$seg3-$key"; if (!$taille) return $isbn; else { if ($taille==10) { //C'est un 13, on recalcule la clef pour le 10 if ($segg) { $key=key10($seg1.$seg2.$seg3); return "$seg1-$seg2-$seg3-$key"; } else return $isbn; } else if ($taille==13) { //C'est un 10, on recalcule la clef if (!$segg) { $segg="978"; $key=key13($segg.$seg1.$seg2.$seg3); return "$segg-$seg1-$seg2-$seg3-$key"; } else return $isbn; } } } function load_isbn_ranges() { global $include_path,$base_path,$charset; $array_isbn_ranges = array(); $xmlFile=$include_path."/notice/isbn_ranges.xml"; // Gestion de fichier subst $xmlFile_subst=substr($xmlFile,0,-4)."_subst.xml"; if (file_exists($xmlFile_subst)){ $xmlFile=$xmlFile_subst; } $fileInfo = pathinfo($xmlFile); $tempFile = $base_path."/temp/XML".preg_replace("/[^a-z0-9]/i","",$fileInfo['dirname'].$fileInfo['filename'].$charset).".tmp"; if (!file_exists($tempFile) || filemtime($xmlFile) > filemtime($tempFile)) { //Le fichier XML original a-t-il été modifié ultérieurement ? //on va re-générer le pseudo-cache if(file_exists($tempFile)){ unlink($tempFile); } //Parse le fichier dans un tableau $fp=fopen($xmlFile,"r") or die("Can't find XML file $xmlFile"); $xml=fread($fp,filesize($xmlFile)); fclose($fp); $param=_parser_text_no_function_($xml, "RANGES"); //Récupération des éléments for ($i=0; $i on tente de le formater en ISBN $code = EANtoISBN($saisieISBN); // si échec, on prend l'EAN comme il vient if(!$code) $code = $saisieISBN; } else { if(isISBN($saisieISBN)) { // si la saisie est un ISBN $code = formatISBN($saisieISBN); // si échec, ISBN erroné on le prend sous cette forme if(!$code) $code = $saisieISBN; } else { // ce n'est rien de tout ça, on prend la saisie telle quelle $code = $saisieISBN; } } return $code ; } return ""; }