Analisi di un feed di dati
Domanda
Non sono il migliore in PHP e sarei estremamente grato se qualcuno potesse aiutarmi. Fondamentalmente ho bisogno di analizzare ogni riga di un feed di dati e ottenere solo ogni bit di informazione tra ogni " | " - Quindi posso aggiungerlo a un database. Penso di riuscire a ottenere le informazioni tra le "quotazioni |" usando esplodi, ma ho bisogno di un po 'di aiuto per analizzare ogni riga da un file di testo come singolare. Infatti per renderlo ancora più semplice, ho solo bisogno che usi ogni riga di una variabile, invierò il contenuto alla variabile usando un'area di testo e un modulo. Qualsiasi aiuto sarebbe molto apprezzato!
Soluzione
Puoi leggere un file in un array di righe ed eseguire tutte le divisioni con:
$lines = file("filename");
foreach($lines as $line) {
$parts = explode("|", $line);
// do the database inserts here
}
Se hai già tutto il testo in una variabile come hai detto (ad es. con qualcosa come file_get_contents ()), puoi prima esplodere su \ n e poi fare la stessa istruzione foreach di cui sopra.
Altri suggerimenti
Se stai leggendo il tuo post di textarea, puoi usare la funzione esplodi usando il carattere di nuova riga come separatore per ottenere ogni " line " nella variabile come nuovo elemento di un array, puoi esplodere sugli elementi del tuo array.
vale a dire.
$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";
$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
$lineElements[] = explode("|", $oneLine);
}
allora hai un array 2d dei tuoi elems.
Se stai leggendo un file, puoi semplicemente usare la funzione file documentata qui:
http://us2.php.net/manual/en/function .file.php
per ottenere ogni riga del file come elemento di un array.
Puoi usare esplodi per ottenere entrambi:
$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
}
}