Question

Je ne suis pas le meilleur en PHP et je serais extrêmement reconnaissant si quelqu'un pouvait vous aider. En gros, je dois analyser chaque ligne d’un flux de données et obtenir chaque information entre "&"; "" - alors je peux l'ajouter à une base de données. Je pense que je peux me débrouiller pour obtenir les informations entre les "| |" en utilisant éclaté, mais j’ai besoin d’un peu d’aide pour analyser chaque ligne d’un fichier texte au singulier. Enfait pour le rendre encore plus simple, j'ai juste besoin d'utiliser chaque ligne d'une variable, je vais soumettre le contenu à la variable en utilisant une zone de texte et un formulaire. Toute aide serait grandement appréciée!

Était-ce utile?

La solution

Vous pouvez lire un fichier dans un tableau de lignes et procéder au fractionnement avec:

$lines = file("filename");
foreach($lines as $line) {
    $parts = explode("|", $line);
    // do the database inserts here
}

Si vous avez déjà tout le texte dans une variable, comme vous l'avez dit (par exemple, avec quelque chose comme file_get_contents ()), vous pouvez commencer par exploser sur \ n puis faire la même chose pour la même chose que ci-dessus.

Autres conseils

Si vous lisez votre message textarea, vous pouvez utiliser la fonction éclatée en utilisant le caractère de nouvelle ligne comme séparateur pour obtenir chaque "ligne". dans la variable en tant que nouvel élément d'un tableau, vous pouvez alors faire exploser vos éléments de tableau.

i.e.

$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";

$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
    $lineElements[] = explode("|", $oneLine);
}

alors vous avez un tableau 2D de vos elems.

Si vous lisez un fichier, vous pouvez simplement utiliser la fonction de fichier documentée ici:

http://us2.php.net/manual/en/function .file.php

pour obtenir chaque ligne du fichier en tant qu'élément d'un tableau.

Il existe une bibliothèque d’analyse PHP prête à l'emploi qui détecte automatiquement le format CSV.

Exemple:

$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');

foreach ($reader AS $record) {
    print_r($record);
}

Il est possible de télécharger ici , ainsi que de la documentation ici .

Si le fichier est petit, vous pouvez utiliser file () t pour le lire dans un tableau. , une ligne par élément.

Sinon, lisez le fichier en boucle à l'aide de fgets ()

.
$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
   $buffer = fgets($handle, 4096);
   echo $buffer;
}
fclose($handle);

Vous pouvez utiliser exploser pour obtenir les deux:

$myFile = "File.txt";
$fh = fopen($myFile, 'r');
$data = fread($fh);
fclose($fh);
$newLines = explode("\n",$data);

foreach($newLines as $s)
{
  $parsed = explode("|",$s);
  foreach($parsed as $item)
  {
    // do your db load here
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top