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 :

Lecture d'un string


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Lecture d'un string
    Bonjour à tous,

    Je souhaiterais faire un lecteur de fichier texte et d'en ressortir un tableau.

    J'ai donc un fichier texte qui ne comprend qu'une unique ligne, avec un caractère spécial pour séparer les différentes cases du tableau : "|".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    15953046|90847387|143892432||2010-09-06 10:41:59|
    Je souhaite donc avoir un tableau de 5 cases :
    [[15953046][90847387][143892432][][2010-09-06 10:41:59]]

    Voici donc mon code :

    Code php : 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
    30
    31
     
    // j'ouvre mon fichier texte et je vérifie son ouverture
     
    if (!$fp = fopen("fichier.txt","r")) {
    echo "Echec de l'ouverture du fichier";
    exit;
    }
     
    //si l'ouverture c'est bien passer
    else {
    	while(!feof($fp)) {
    	// On récupère une ligne
    		$Ligne = fgets($fp);
    	// On stocke l'ensemble des lignes dans une variable
    		$Fichier .= $Ligne;
    	}
    	//On afficher l'ensemble du fichier 
    	echo "<p>".$Fichier."</p>";
     
    	//Je souhaite faire un split sur le charactère "|" qui possède pour code ascii 124
    	$a = chr(124);
    	$tab = split( $a , $Fichier);	
     
    	$size = count($tab);	
    	for ($i = 0; $i <= $size; $i++){
    		//Je souhaite afficher chaque case du tableau
                    echo $tab[$i]."<br/>";
    	}
     
    	fclose($fp); // On ferme le fichier
    }

    Or mon split ne fonctionne pas.

    J'ai donc fait des tests

    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
     
        echo "fichier : ". $Fichier[8]."<br/>"; 
        echo "le ascii : ". chr(124)."<br/>";
        echo "le ISO : ". "|"."<br/>";
     
        if ( chr(124) == $Fichier[8]) {
            echo "ascii/fichier : c'est pareil <br/>";
            }
        else {
            echo "ascii/fichier : c'est pas pareil <br/>";
            }
     
        if ( chr(124) == "|") {
            echo "ascii/ISO : c'est pareil <br/>";
            }
        else {
            echo "ascii/ISO : c'est pas pareil <br/>";
            }
     
        if ( $Fichier[8] == "|") {
            echo "fichier/ISO : c'est pareil <br/>";
            }
        else {
            echo "fichier/ISO : c'est pas pareil <br/>";
            }
    et voici ce qui apparait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fichier : |
    le ascii : |
    le ISO : |
    ascii/fichier : c'est pareil
    ascii/ISO : c'est pas pareil
    fichier/ISO : c'est pas pareil
    donc techniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chr(124) == $Fichier[8]
    et donc le split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $tab = split( chr(124) , $Fichier);    
    devrais me sortir un tableau, hor
    s il me dit que le tableau est vide.

    Merci de votre aide!

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    du CSV quoi,
    sois avec fgetcsv, ou en plus moderne avec SplFileObject avec le flag SplFileObject::READ_CSV

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    je ne connais rien au CSV :s

    Par contre j'ai débloquer mon soucis en remplaçant mon split par un explode mais je doute que ce soit très propre...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par kkwet30 Voir le message
    je ne connais rien au CSV :s

    Par contre j'ai débloquer mon soucis en remplaçant mon split par un explode mais je doute que ce soit très propre...

    faut juste lire la doc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $file = fopen('fichier.txt', 'r');
    while($data = fgetcsv($file, 0, '|'))
    {
        print_r($data);
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Et bien merci!

    cela fonctionne bien!

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par kkwet30 Voir le message
    Et bien merci!

    cela fonctionne bien!
    et comme ca avec SplFileObject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $file = new SplFileObject('data.txt');
    $file->setFlags(SplFileObject::READ_CSV);
    $file->setCsvControl('|');
     
    foreach($file as $data)
    {
        print_r($data);
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Merci!

    ça m'a l'aire super propre comme code!
    Juste une question $data c'est qu'elle variable pour toi?

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

Discussions similaires

  1. [Débutant] condition de lecture avec/sans string
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 3
    Dernier message: 08/09/2012, 11h11
  2. lecture d'un String
    Par benedicte123 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/11/2008, 14h45
  3. Grave problème de lecture de tableau string
    Par a_lincoln54 dans le forum C++
    Réponses: 3
    Dernier message: 02/06/2008, 16h55
  4. Lecture de fichier : Probleme avec les string
    Par soda_o_rat dans le forum SL & STL
    Réponses: 10
    Dernier message: 11/08/2005, 22h59
  5. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06

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