IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] supprimer retour chariot


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut [Tableaux] supprimer retour chariot
    bonjour


    j'ai ce script qui lit dans un fichier, coupe les lignes selon un séparateur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?
    $file = "/home/serverlist.dat";
    $lines = file ($fichier);
    $delimiteur = ";";
    $u = -1;
    $y = 0;
    if($fp = fopen($file,"r")) {
      /* extraction d'une ligne */
         while ($ligne = fgets($fp)) {
         $u = $u+1;
         $y = 0;
        /* extraction champs */
       $tab = explode($delimiteur, $ligne);
        /* affichage des champs */
        foreach($tab as $elem) {
    echo 'group[' . $u . '][' . $y . ']=new Option("' . $elem . '","result.php")' . "\n<Br>" ;
    //echo "group['$u']['$y']=new Option('" . $elem . "','result.php')\n" ;
     $y = $y+1;
     }
    }
     /* fermeture fichier */
     fclose ($fp);
    } else {
     echo "Ouverture du fichier " . $file . " impossible.";
    }
    ?>

    Cela me donne en résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    group[0][0]=new Option("server1","result.php") 
    group[0][1]=new Option("toto1a","result.php") 
    group[0][2]=new Option("toto1b","result.php") 
    group[0][3]=new Option("toto1c ","result.php") 
    group[1][0]=new Option("server2","result.php") 
    group[1][1]=new Option("toto2a","result.php") 
    group[1][2]=new Option("toto2b ","result.php") 
    group[2][0]=new Option("server3","result.php") 
    group[2][1]=new Option("toto3a","result.php") 
    group[2][2]=new Option("toto3b","result.php") 
    group[2][3]=new Option("toto3C ","result.php")

    A 1ere vue très bien, sauf que si je regarde la source, j'ai un retour à la ligne pour chacun des derniers champs extraits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    group[0][0]=new Option("server1","result.php")
    <Br>group[0][1]=new Option("toto1a","result.php")
    <Br>group[0][2]=new Option("toto1b","result.php")
    <Br>group[0][3]=new Option("toto1c
    ","result.php")
    <Br>group[1][0]=new Option("server2","result.php")
    <Br>group[1][1]=new Option("toto2a","result.php")
    <Br>group[1][2]=new Option("toto2b
    ","result.php")
    <Br>group[2][0]=new Option("server3","result.php")
    <Br>group[2][1]=new Option("toto3a","result.php")
    <Br>group[2][2]=new Option("toto3b","result.php")
    <Br>group[2][3]=new Option("toto3C
    ","result.php")
    Et impossible de trouver pourquoi ce retour à la ligne (par exemple:
    <Br>group[0][3]=new Option("toto1c
    ","result.php") -> pourquoi ce retour ?

    Si vous pouviez m'aider !

    merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    et voici le contenu du fichier serverlist.dat:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    server1;toto1a;toto1b;toto1c
    server2;toto2a;toto2b
    server3;toto3a;toto3b;toto3C

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    tu utilises ; comme caractère de séparation. Il faut d'abord que tu récupères chaque ligne de ton fichier en faisant un explode sur \n (caractère de saut de ligne) et ensuite tu pourras, pour chaque ligne, faire ton explode sur le ;

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    bonjour

    En faisant ces modifications:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?
    $file = "/home/serverlist.dat";
    $lines = file ($fichier);
    $del1 = "\n";
    $delimiteur = ";";
    $u = -1;
    $y = 0;
    if($fp = fopen($file,"r")) {
      /* extraction d'une ligne */
       while ($ligne = fgets($fp)) {
         $u = $u+1;
         $y = 0;
      /* extraction champs */
        $tab1 = explode($del1, $ligne);
        $tab = explode($delimiteur, $tab1);
     
          /* affichage des champs */
           foreach($tab as $elem) {
      echo 'group[' . $u . '][' . $y . ']=new Option("' . $elem . '","result.php")' . "\n" ;
    //echo "group['$u']['$y']=new Option('" . $elem . "','result.php')\n" ;
      $y = $y+1;
         }
          }
           /* fermeture fichier */
      fclose ($fp);
      } else {
      echo "Ouverture du fichier " . $file . " impossible.";
       }
     ?>

    Voici ce qu'il m'affiche dans le code source résultant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    group[0][0]=new Option("Array","result.php")
    group[1][0]=new Option("Array","result.php")
    group[2][0]=new Option("Array","result.php")
    je n'ai donc plus rien en sortie !
    MErci

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    explode() prend en paramètre une chaine et non un tableau, or le deuxieme appel que vous faites a explode prend un tableau en paramètre ce qui n'est pas correct.

    Il faut appliquer le principe du foreach a chaque ligne de $tab1 pour que ca fonctionne.

    Une bonne solution serait d'afficher le résultat de chaque explode avec un var_dump() pour débugger de votre coté...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La fonction fgets retournant, dans son résultat, le ou les caractères de nouvelle ligne : puis-je proposer un simple rtrim sur ce dernier (au niveau de l'explode par exemple) ?

    Par contre la condition while ($ligne = fgets($fp)) devrait plutôt être while (!feof($fp)) et l'instruction précédente déplacée dans le corps de l'itération.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    super ça marche !
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer retour chariot
    Par tiesto95 dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2009, 00h53
  2. Supprimer retour chariot dans un fichier CSV
    Par smain_inf dans le forum VBScript
    Réponses: 2
    Dernier message: 20/08/2008, 09h56
  3. supprimer retour chariot
    Par peppena dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2007, 12h25
  4. notepad++ supprimer retour chariot
    Par ilood dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 19/05/2007, 11h17
  5. Supprimer retour chariot à la fin de fichier txt
    Par vinaely dans le forum Oracle
    Réponses: 4
    Dernier message: 29/03/2006, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo