Mauvaise reconnaissance de la fin d'un fichier

Mauvaise reconnaissance de la fin d'un fichier - PHP - Programmation

Marsh Posté le 03-07-2008 à 12:16:42    

Bonjour
 
J'ai un programme PHP qui parse un fichier CSV.
Dés qu'il rencontre un accent (é,è,à ou ë), il le considère comme un caractère de fin de fichier.
Mon fichier est encodé en Occidental ISO-8859-15
 
Que dois-je vérifier sur ma machine (Linux) pour qu'il ne considère pas mes accents comme des caractères de fin de fichier? Configuration apache, des paramètres sur mon serveur?
 
Merci  d'avance

Reply

Marsh Posté le 03-07-2008 à 12:16:42   

Reply

Marsh Posté le 03-07-2008 à 12:20:28    

Le code ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-07-2008 à 13:28:42    

Voilà le code sur un environnement Windows et Linux de langue française le fichier est traité dans sa totalité.
 
Mais je dois le faire sur un environnement Linux Américan. J'ai essayé de changer la langue du serveur sans succès. Au premier accent, c'est considéré comme la fin du fichier.
   
  //Ouverture du fichier téléchargé
  $tableau_final[]="";
  $fp=fopen($upfile,"r" );
  // Vérification des en-tête des champs de la première ligne
     
  $entete[0]=";\"AFF_LIB";
  $entete[1]="Libellé de l'affaire\";\"AFF_TYPE_TRAV_LIB";
  $entete[2]="Libellé du type de travaux\";\"CA_NOM_PRENOM";
  $entete[3]="Chargé d'affaire\";\"AFF_INSEE";
  $entete[4]="Numéro INSEE\";\"AFF_COMMUNE";
  $entete[5]="Commune principale\";\"AFF_ADR";
  $entete[6]="Adresse des travaux\";\"AFF_REF_ARTICLE49";
  $entete[7]="Réf. projet gaz (Art. 9)\";\"AFF_CPR";
  $entete[8]="Centre de profit\";\"AFF_DT_RO_PREV";
  $entete[9]="Date remise d'ouvrage prévue\";\"AFF_DT_RO_REA";
  $entete[10]="Date remise d'ouvrage réalisée\";\"AFF_DT_DEB_TRAV_PREV";
  $entete[11]="Date début des travaux prévue\";\"AFF_DT_DEB_TRAV_REA";
  $entete[12]="Date début des travaux réalisée\";\"AFF_DT_FIN_TRAV_PREV";
  $entete[13]="Date fin de travaux prévue\";\"AFF_DT_FIN_TRAV_REA";
  $entete[14]="Date fin de travaux réalisée\";\"AFF_DT_ENV_DEC_PREV";
  $entete[15]="Date d'envoi de la demande d'éléments cartographiques prévue\";\"AFF_DT_ENV_DEC_REA";
  $entete[16]="Date d'envoi de la demande d'éléments cartographiques réalisée\";\"AFF_DT_ENV_AUTORI_PREV";
  $entete[17]="Projet gaz (article 9) prévue\";\"AFF_DT_ENV_AUTORI_REA";
  $entete[18]="Projet gaz (article 9) réalisée\";\"AFF_DT_ENV_DC_PREV";
  $entete[19]="Date d'envoi du dossier cartographique prévue\";\"AFF_DT_ENV_DC_REA";
  $entete[20]="Date d'envoi du dossier cartographique réalisée\"";
   
 
  for($i=0;$i<21;$i++){
   $tableau=fgetcsv($fp,100);
   $table=$tableau[0];
   if($table==$entete[$i]) {
       $occ++;      
     } else {
      echo ($entete[$i]).' != '.$table.' <br/><br/><br/>';
     }
  }
    //Récupération des données, test de leur présence, et mise à jour ou insertion
  $nbNewAff=0;
  $nbUpdaAff=0;  
  if($occ==21){
   $cpt = 0;
    while(($table=fgetcsv($fp,1024,";" ))){
    $Aff_Code = $table[0];  
    $Aff_Insee=$table[4];
    $val_ret = true;
    if (($Aff_Insee ==null) || ($Aff_Insee=='ND') || ($Aff_Code==null) || (strlen($Aff_Insee)<4))
    {
     $val_ret = false;
    }  
    if ($val_ret)
    {
     while (strlen($Aff_Insee)<5) {
      $Aff_Insee = "0".$Aff_Insee;
     }
    }
    if ($val_ret) {
     $cNumCentre= getcnumnentreFromCodeInsee($Aff_Insee);  
     $cpt++;
     $ret = getUpdateorAddAffFromRep($cNumCentre,$Aff_Code);
     if ($ret=='insertAff'){
      $field = 'INSERT INTO AFFAIRE (';
      $value = " VALUES (";
      $id = getNextId('SEQ_AFFAIRE');
      addInsertFieldByVal($id,"INUM_AFFAIRE",& $field, &$value);
      addInsertFieldByVal($Aff_Insee,"CCODE_INSEE",& $field, &$value);
      addInsertFieldByVal("","INUM_EXPLOITANT",& $field, &$value);
      addInsertFieldByVal($cNumCentre,"CNUM_CENTRE",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",@$table[0]),"CCODE_AFFAIRE",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",substr(@$table[7],0,19)),"CARTICLE",& $field, &$value);
      addInsertFieldByVal("9","IAFFFCER",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",@$table[3]),"CCHARGE_AFFAIRE",& $field, &$value);
      addInsertFieldByVal($table[8],"CNUM_GR",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",@$table[1]),"CLIB_TRAVAUX",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",@$table[2]),"CTYPE_TRAVAUX",& $field, &$value);
      addInsertFieldByVal(str_replace("'","''",@$table[6]),"CADR_TRAVAUX",& $field, &$value);
      addInsertFieldByVal($table[15],"DDEMANDE_CARTO",& $field, &$value);
      addInsertFieldByVal($table[12],"DDEB_TRAVAUX",& $field, &$value);
      addInsertFieldByVal($table[14],"DFIN_TRAVAUX",& $field, &$value);
      addInsertFieldByVal($table[10],"DPMEO",& $field, &$value);
      addInsertFieldByVal($table[20],"DENVOI_DOS_CARTO",& $field, &$value);
      $sql=addFieldsAndValuesInsert($field,$value);
      echo ('<b><font color=red>Ajout de l\'affaire '.str_replace("'","''",@$table[0]).'</font></b><br><br>');
      echo ($sql.'<br>-------------------------------------------------<br>');
      execute($sql);
     }
      else {
      $sql = 'UPDATE AFFAIRE SET ';
      $withComa=FALSE;
      addUpdateFieldByVal($Aff_Insee,"CCODE_INSEE",& $sql, &$withComa);
      addUpdateFieldByVal("","INUM_EXPLOITANT",& $sql, &$withComa);
      addUpdateFieldByVal($cNumCentre,"CNUM_CENTRE",& $sql, &$withComa);
      addUpdateFieldByVal(str_replace("'","''",@$table[0]),"CCODE_AFFAIRE",& $sql, &$withComa);
      addUpdateFieldByVal(str_replace("'","''",substr(@$table[7],0,19)),"CARTICLE",& $sql, &$withComa);
      addUpdateFieldByVal("9","IAFFFCER",& $field, &$withComa);
      //addUpdateFieldByVal($table[7],"IMOA_ER",& $sql, &$withComa); // n'existe plus pour l'ELEC
      addUpdateFieldByVal(str_replace("'","''",@$table[3]),"CCHARGE_AFFAIRE",& $sql, &$withComa);
      addUpdateFieldByVal($table[8],"CNUM_GR",& $sql, &$withComa);
      addUpdateFieldByVal(str_replace("'","''",@$table[1]),"CLIB_TRAVAUX",& $sql, &$withComa);
      addUpdateFieldByVal(str_replace("'","''",@$table[2]),"CTYPE_TRAVAUX",& $sql, &$withComa);
      addUpdateFieldByVal(str_replace("'","''",@$table[6]),"CADR_TRAVAUX",& $sql, &$withComa);
      addUpdateFieldByVal($table[15],"DDEMANDE_CARTO",& $sql, &$withComa);
      addUpdateFieldByVal($table[12],"DDEB_TRAVAUX",& $sql, &$withComa);
      addUpdateFieldByVal($table[14],"DFIN_TRAVAUX",& $sql, &$withComa);
      addUpdateFieldByVal($table[10],"DPMEO",& $sql, &$withComa);
      addUpdateFieldByVal($table[20],"DENVOI_DOS_CARTO",& $sql, &$withComa);
 
      $sql .= ' WHERE INUM_AFFAIRE=' .$ret;
      echo ('<b><font color=red>Mise à jour de l\'affaire '.str_replace("'","''",@$table[0]).'</font></b><br><br>');
      echo ($sql.'<br>-------------------------------------------------<br>');
      execute($sql);
     }    
    }            
    }  
  }
  else {
   echo "le fichier sélectionné n'a pas le format attendu <br/>";
  }
  fclose($fp);
 
Merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed