Uma alimentação de análise de dados
Pergunta
Eu não sou o melhor em PHP e ficaria muito grato se alguém poderia ajudar. Basicamente eu preciso analisar cada linha de um datafeed e é só pegar cada bit de informação entre cada "|" - então eu posso adicioná-lo a um banco de dados. Eu acho que posso lidar recebendo a informação de entre o "|" é usando explodir, mas eu preciso de um pouco de ajuda com a análise de cada linha de um arquivo de texto como um singular. De facto para torná-lo ainda mais simples, eu só preciso usar cada linha de uma variável, vou enviar conteúdo para a variável usando um textarea e um formulário. Qualquer ajuda seria muito apreciada!
Solução
Você pode ler um arquivo em uma matriz de linhas e fazer todo o dividir com:
$lines = file("filename");
foreach($lines as $line) {
$parts = explode("|", $line);
// do the database inserts here
}
Se você já tem todo o texto em uma variável como você disse (por exemplo, com algo como file_get_contents ()), você pode explodir em \ n primeiro e depois fazer a mesma declaração foreach como acima.
Outras dicas
Se você está lendo para fora do seu post textarea, você pode usar a função usando o caractere de nova linha explodir como o separador para obter cada "linha" na variável como um novo elemento de uma matriz, então você pode fazer explodir em seu elementos de matriz.
i.
$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";
$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
$lineElements[] = explode("|", $oneLine);
}
então você tem uma matriz 2d de seus elems.
Se você está lendo a partir de um arquivo, você pode simplesmente usar a função de arquivo documentado aqui:
http://us2.php.net/manual/en/function .file.php
para obter cada linha do arquivo como um elemento de uma matriz.
Há um PHP pronto-construída analisar biblioteca que pode detectar automaticamente o formato CSV.
Exemplo:
$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');
foreach ($reader AS $record) {
print_r($record);
}
Ele está disponível para download aqui , e há alguma documentação aqui .
Você pode usar explodir para obter tanto:
$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
}
}