Fichier .txt => Tableau Array() ?

Fichier .txt => Tableau Array() ? - PHP - Programmation

Marsh Posté le 07-06-2006 à 12:19:29    

Salut  :hello:  
 
J'aimerai pouvoir charger un fichier texte type  

Code :
  1. blop
  2. salut
  3. john


 
pour qu'il se transforme en un tableau Array() type :

Code :
  1. $tableau = array
  2. (
  3. 'blop',
  4. 'salut',
  5. 'john',
  6. )


 
QQun saurait m'expliquer ?


Message édité par nycius le 07-06-2006 à 12:20:06
Reply

Marsh Posté le 07-06-2006 à 12:19:29   

Reply

Marsh Posté le 07-06-2006 à 12:21:43    

Reply

Marsh Posté le 07-06-2006 à 12:53:40    

http://fr2.php.net/manual/fr/function.fgets.php
 

Code :
  1. <?php
  2. $tableau = array();
  3. $handle = @fopen("tonfichier.txt", "r" );
  4. if ($handle)
  5. {
  6.    while (!feof($handle))
  7.    {
  8.      $buffer = fgets($handle, 4096);
  9.      $tableau[] = $buffer;
  10.    }
  11.    fclose($handle);
  12. }
  13. if ($tableau)
  14. {
  15.    print_r($tableau);
  16. }
  17. else
  18. {
  19.    echo "Le remplissage du tableau a échoué";
  20. }
  21. ?>

Message cité 1 fois
Message édité par aipsy0783 le 07-06-2006 à 12:57:21
Reply

Marsh Posté le 07-06-2006 à 12:56:34    

aipsy0783 a écrit :

http://fr2.php.net/manual/fr/function.fgets.php
 

Code :
  1. <?php
  2. $handle = @fopen("/tmp/inputfile.txt", "r" );
  3. if ($handle) {
  4.    while (!feof($handle)) {
  5.      $buffer = fgets($handle, 4096);
  6.      echo $buffer;
  7.    }
  8.    fclose($handle);
  9. }
  10. ?>



[:pingouino]
 
Via l'url d'avant :

Code :
  1. $arr = file('./monfichier');


C'est juste 10 fois plus cour [:pingouino]


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 07-06-2006 à 12:59:01    

c'est en cas où il fait des modifs hein ;) comme mettre des majuscules au début de ces noms par exemple lol ou récupérer que ceux qui commencent par "b"

Message cité 1 fois
Message édité par aipsy0783 le 07-06-2006 à 13:00:56
Reply

Marsh Posté le 07-06-2006 à 13:00:51    

aipsy0783 a écrit :

c'est en cas où il fait des modifs hein ;) comme mettre des majuscules au début de ces noms par exemple lol


 :o Fausse excuse
http://fr2.php.net/manual/en/function.array-walk.php  ;)  


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 07-06-2006 à 13:01:45    

ouais mais non c'est quoi ce truc en deux fonctions lol
 
vla...
 

Code :
  1. <?PHP
  2. class fichier
  3. {
  4.   var $fichier;
  5.   var $handle;
  6.   function fichier($chaine)
  7.   {
  8.     $this->fichier = $chaine;
  9.   }
  10.   function open()
  11.   {
  12.     $this->handle = @fopen($this->fichier,"r" );
  13.   }
  14.   function recupLigne()
  15.   {
  16.     $buffer = fgets($this->handle, 4096);
  17.     return $buffer;
  18.   }
  19.   function stock()
  20.   {
  21.     $this->open("r" );
  22.     if ($this->handle)
  23.     {
  24.       $tab = array();
  25.       while (!feof($this->handle))
  26.       {
  27.         $ligne = $this->recupLigne();
  28.         $tab[] = $this->traitement($ligne);
  29.       }
  30.       $this->close();
  31.       return $tab; 
  32.     }
  33.   }
  34.   function traitement($chaine)
  35.   {
  36.     // fonction éventuelle de traitement
  37.     return $chaine;
  38.   }   
  39. }
  40. $monfichier = new fichier("montexte.txt" );
  41. $montableau = $monfichier->stock();
  42. ?>


Message édité par aipsy0783 le 07-06-2006 à 13:16:38
Reply

Marsh Posté le 07-06-2006 à 14:06:41    

Merci les gars ca marche impec
 
seul soucis
j'ai que 3 lignes dans mon fichier texte pourtant en resultat il m'affiche 4 lignes avec la derniere vide

Reply

Marsh Posté le 07-06-2006 à 15:00:46    

a cause d'un \n en trop dans ton fichier surement


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 07-06-2006 à 17:57:13    

mais ça avec une fonction de traitement tu peux vérifier que la chaine n'est pas vide :P

Reply

Marsh Posté le 07-06-2006 à 17:57:13   

Reply

Marsh Posté le 07-06-2006 à 18:08:04    

aipsy0783 a écrit :

mais ça avec une fonction de traitement tu peux vérifier que la chaine n'est pas vide :P


ou en enlevant le \n du fichier de donnes


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 07-06-2006 à 18:14:17    

encore plus court :

Code :
  1. $values = explode("\n",file_get_contents("fichier.txt" ));


Message édité par dwogsi le 07-06-2006 à 18:15:53
Reply

Marsh Posté le 13-07-2014 à 13:07:57    

Bonjour, pouvez vous m'aidé car je suis débutant
je peux lire mon fichier mais je souhaiterais le faire dans un tableau en récupérant certaines lignes du fichier.Merci

Code :
  1. <?php
  2. $bdd = NEW PDO('mysql:host=localhost;dbname=server_statut','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  3. $reponse = mysqli_init("SELECT * FROM server_statut" );
  4. $url="http://aventureclub-airlines.fr/whazzup/whazzup.txt";
  5. $tab = file($url);
  6. $start = FALSE;
  7. foreach ($tab as $line) {
  8. $line = trim($line);
  9. if ($line == '') { break; }
  10.    if ($start) {
  11.  print_r(explode(':',$line));
  12.    }
  13.    if ($line == '!CLIENTS') {
  14.    $start = TRUE;
  15.    echo 'GO';
  16.    }
  17.    elseif ($line == '!SERVERS') {
  18.    $start = FALSE;
  19.    }
  20. }
  21. ?>


 
Sa donne sa:

Code :
  1. GOArray ( [0] => LFFF_CTR [1] => ATC [2] => Aventureclub AIRLINES [3] => ATC [4] => 128.100 [5] => 48.713056 [6] => 2.418888 [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => -AventureClub- [15] => 0.0.4.H [16] => 11 [17] => [18] => 6 [19] => 700 [20] => [21] => [22] => [23] => [24] => [25] => [26] => [27] => [28] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => No Atis * 212.227.107.53 Port 8767/LFFF_CTR [36] => [37] => 20140713115211 [38] => DafRadar [39] => 0.0.4.H [40] => 11 [41] => 10 [42] => [43] => [44] => [45] => [46] => ) Array ( [0] => ACF13 [1] => ACF13 [2] => Jean-louis  [3] => PILOT [4] => 122.800 [5] => 29.302073 [6] => -10.647657 [7] => 36796 [8] => 463 [9] => T/E170/F [10] => 350 [11] => GMML [12] => 370 [13] => GMMN [14] => -AventureClub- [15] => 0.0.4.X [16] => 10 [17] => 2014 [18] => [19] => [20] => [21] => I [22] => 0000 [23] => 0000 [24] => 0 [25] => 0 [26] => 0 [27] => 0 [28] => GMME [29] => [30] => SOLNA UA600 ADM UG850 MAK UR722 CSD [31] => [32] => [33] => [34] => [35] => [36] => [37] => 20140713075043 [38] => Daf*FSX [39] => 0.0.4.X [40] => 1 [41] => 10 [42] => [43] => [44] => 1 [45] => 52 [46] => 0 ) Array ( [0] => ACF01 [1] => ACF01 [2] => Denis BOUS [3] => PILOT [4] => 122.80 [5] => 42.697582 [6] => 13.558798 [7] => 37259 [8] => 483 [9] => T/B787/F [10] => 470 [11] => LFRS [12] => 370 [13] => LGAV [14] => -AventureClub- [15] => 0.0.4.X [16] => 12 [17] => 1200 [18] => [19] => [20] => [21] => I [22] => 0000 [23] => 0000 [24] => 0 [25] => 0 [26] => 0 [27] => 0 [28] => NONE [29] => [30] => LUGEN UM616 BEBIX UP860 MEDAM UM730 KUMIN UM730 KODOK UM730 FRZ UM872 VALEN UZ904 PREKI UQ920 PES UM872 DIVKU UP92 BRD UL995 KRK UL53 PIKAD [31] => [32] => [33] => [34] => [35] => [36] => [37] => 20140713095031 [38] => Daf*XP10 [39] => 0.0.4.X [40] => 12 [41] => 10 [42] => [43] => [44] => 198 [45] => 120 [46] => 0 ) Array ( [0] => !SERVERS )

en couleurs,c'est ce que je veux récupérer "vert colonne: Online controleurs champs:ATC,Name,frequency et en bleu  pour une colonne: Online Pilotes champs:Callsign,Name,FS  .;) la liste change en fonction des membres connecter sur le server [3] => ATC   et [4] => PILOT clé primaire pour mes colonnes
Merci de votre aide


Message édité par denis acf01 le 13-07-2014 à 14:13:59
Reply

Marsh Posté le 13-07-2014 à 17:56:46    

J'ai réalisé :

Code :
  1. $url="http://aventureclub-airlines.fr/whazzup/whazzup.txt";
  2. $file = file($url);
  3. $connect = array();
  4. foreach ($file as $line) {
  5.    $line = trim($line);
  6. if(preg_match("/([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches)){
  7. $connect[] = array($matches[1][1], $matches[2],);
  8. }
  9. }


 
et j'ai une page vide!!! :pt1cable:

Reply

Marsh Posté le 16-07-2014 à 09:20:04    

normal que tu ais une page vide, tu n'affiches pas ton tableau là.
Après le foreach mets

 
Code :
  1. echo "<pre>"; var_dump($connect); echo "</pre>";
 

edit : Quand je dis après le foreach c'est après l'accolade fermante.


Message édité par Pablo Escrobarbe le 16-07-2014 à 09:20:36

---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 17-07-2014 à 14:59:13    

Merci pour ton aide sa m'affiche bien le tableau

Code :
  1. array (size=3)
  2.   0 =>
  3.     array (size=2)
  4.       0 => string 'ACF01' (length=5)
  5.       1 => string 'ACF01' (length=5)
  6.   1 =>
  7.     array (size=2)
  8.       0 => string 'ACF13' (length=5)
  9.       1 => string 'ACF13' (length=5)
  10.   2 =>
  11.     array (size=2)
  12.       0 => string '-AventureClub-' (length=14)
  13.       1 => string 'aventureclub-airlines.fr' (length=24)


 
Mais lorsque je choisi   le 4=> et le =>38 , j'ai une erreur car je pense qu'il manque une variable "le 4 et un chiffre 000.000  et le 38 il y a * donc c'est normal mais je ne sais pas mettre comme variable :sarcastic:
 

Code :
  1. if(preg_match("/([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches, $number )){
  2. $connect[] = array($matches[0], $matches[1],$matches[2], $matches[3],$number[4] );


Message édité par denis acf01 le 17-07-2014 à 15:34:33
Reply

Marsh Posté le 18-07-2014 à 13:19:41    

Re bonjour,  
Après plusieurs tentative, j'ai trouver une solution mais avec une question :na:  

Code :
  1. if(preg_match("/([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches )){
  2. $connect[] = array($matches[2], $matches[3], $matches[4] );


 
 
Pour trouver ma ligne je dois, mètres 38 fois  

Code :
  1. \:([^:]+)


:pt1cable:  
y a t'il une solution? Merci
j'ai essayé avec preg_match_all mais je préfère choisir moi même :kaola:


Message édité par denis acf01 le 18-07-2014 à 13:21:18
Reply

Marsh Posté le 18-07-2014 à 13:24:28    

fait un preg_match_all et choisis au moment de constuire ton tableau :
 

Code :
  1. $connect[] = array($matches[2], $matches[3], $matches[4], $matches[38]);


---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 18-07-2014 à 13:29:53    

Erreur=>Notice: Undefined offset: 38 in :??:

Code :
  1. f(preg_match_all("/([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches )){
  2. $connect[] = array($matches[2], $matches[3], $matches[38] );


Message édité par denis acf01 le 18-07-2014 à 13:44:42
Reply

Marsh Posté le 23-07-2014 à 10:13:51    

fait un

Code :
  1. echo '<pre>'; var_dump($matches); echo '</pre>'; die();


 
mets cette ligne juste après le preg_match_all


Message édité par Pablo Escrobarbe le 23-07-2014 à 10:15:24

---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 23-07-2014 à 11:52:57    

j'arrive pas :(  peux tu m'affiché le code complet Merci ;)
 
Par contre après cela, je dois l'envoyer dans ma BDD  auquel il y a des colonnes Callsign, Name,FS  et comme je débute j'ai du mal  :sweat:  
Peux-tu m'aidé Merci


Message édité par denis acf01 le 23-07-2014 à 12:02:37
Reply

Marsh Posté le 24-07-2014 à 14:10:38    

Code :
  1. if(preg_match_all("/([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches )){
  2.     echo '<pre>'; var_dump($matches); echo '</pre>'; die();
  3. }


---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 24-07-2014 à 14:16:54    

ah mais c'est ton preg_match_all qui va pas


---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 11-08-2014 à 13:41:24    

Re bonjour, j'ai enfin réussi à obtenir mon script mais j'ai un petit souci impossible le lire toute la chaine de caractère! le dois récupérer une valeur mais j'ai une erreur offset
comment faire? merci

 

Code :
  1. $bdd  = NEW PDO('mysql:host=localhost;dbname=server_statut','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  2. $url  = "http://aventureclub-airlines.fr/whazzup/whazzup.txt";
  3. $file = file($url);
  4. $connect = array();
  5. foreach ($file as $line)
  6. {
  7.     $line = trim($line);
  8.     if(false != preg_match("/([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)\:([^:]+)/", $line, $matches))
  9.     {
  10.         $connect[] = array(
  11.      $matches[1],
  12.             $matches[2],
  13.             $matches[3],
  14.             $matches[12],
  15.             $matches[14],
  16.            $matches[10],
  17.             $matches[39],
  18.         );
  19.     }
  20. }


Message édité par denis acf01 le 12-08-2014 à 06:49:27
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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