Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edson L. Zimmermann

[Resolvido] Arquivo txt Separar dados do resultado por coluna

Recommended Posts

Boa tarde

 

Estou trabalhando com uma leitora digital, que lê cartões de resultado, como aqueles de loteria certo? A leitora gera um arquivo dat, e eu consegui ler o arquivo dat com php, e separar cada leitura por linha, já que cada leitura é o gabarito de uma prova. o problema é o seguinte, a resposta na tela é essa:

11234563AABBCCDDEEDDCCBBAABBCCDDEEDDCCBBAABBCCDDEEDDCCBBAABBCCDDEEDD

44444443ABCDEDCBABCDEDCBABCDEDCBABCDEDCBABCDEDCBABCDEDCBABCDEDCBABCD

 

dá mesma maneira que o arquivo de texto, o problema é o seguinte...precisa tratar esses dados...até a sétima coluna é o código do aluno, a noitava é a prova, e a partir da nona é a resposta de cada pergunta...bom.preciso separar isso em variaveis pra poder gravar no banco de dados...estou pesquisndo bastante mais não encontrei nada até agora.

 

Grato se alguém puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Edson, supondo que cada linha é uma string com "N" carcteres

você pode tentar utilizar as seguintes funções:

 

str_split()

substr()

 

De uma estudada nelas pois a primeira cria um array de sua string com a quantidade

de caracteres desejada. A segunda captura de 0 a N caracteres desejados.

 

Uma das duas vai lhe ajudar melhor. Basta ler os exemplos do manual ^_^

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado amigo...vou estudar essas funções...posto aqui minhas dúvidas

 

Amigo Edson, supondo que cada linha é uma string com "N" carcteres

você pode tentar utilizar as seguintes funções:

 

str_split()

substr()

 

De uma estudada nelas pois a primeira cria um array de sua string com a quantidade

de caracteres desejada. A segunda captura de 0 a N caracteres desejados.

 

Uma das duas vai lhe ajudar melhor. Basta ler os exemplos do manual ^_^

 

Abraços.

 

Cheguei a algum lugar já...mais me faltou conhecimento pra continuar...fiz o seguinte teste:

 

$str = "11234563AABBCCDDEEDDCCBBAABBCCDDEEDDCCBBAABBCCDDEEDDCCBBAABBCCDDEEDD";

$arr1 = str_split($str);
$arr2 = substr($str,8);
$arr3 = str_split($arr2);

$inscricao = $arr1[0].$arr1[1].$arr1[2].$arr1[3].$arr1[4].$arr1[5].$arr1[6];
$prova = $arr1[7];

echo "Inscrição: ".$inscricao."<br>";
echo "Prova: ".$prova."<br>";
echo $arr2."<br>";
print_r($arr3);

Até ai tudo bem, porque eu peguei a primeira linha do txt e coloquei direto na variavel...como eu vou fazer pra tratar todas as linhas do arquivo de texto dessa forma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok...consegui fazer até o seguinte ponto..

 

$arquivo = "edson.dat";
$fo = fopen($arquivo, "r");
$linhas = count(file("edson.dat"));

for($i = 0; $i <= $linhas; $i++){ 

	$str = fread( $fo, 1024 );
	$arr1 = str_split($str);
	$arr2 = substr($str,8); // retorna "de"
	$arr3 = str_split($arr2);

	$inscricao = $arr1[0].$arr1[1].$arr1[2].$arr1[3].$arr1[4].$arr1[5].$arr1[6];
	$prova = $arr1[7];

echo "<strong>".$i."</strong><br>";
	echo $prova."<br>";
	echo $inscricao."<br>";
	print_r($arr3)."<br>";
	echo "<br>---------------<br>";
}

O resultado na tela fica assim:

 

0
3
1123456
Array ( [0] => A [1] => A [2] => B [3] => B [4] => C [5] => C [6] => D [7] => D [8] => E [9] => E [10] => D [11] => D [12] => C [13] => C [14] => B [15] => B [16] => A [17] => A [18] => B [19] => B [20] => C [21] => C [22] => D [23] => D [24] => E [25] => E [26] => D [27] => D [28] => C [29] => C [30] => B [31] => B [32] => A [33] => A [34] => B [35] => B [36] => C [37] => C [38] => D [39] => D [40] => E [41] => E [42] => D [43] => D [44] => C [45] => C [46] => B [47] => B [48] => A [49] => A [50] => B [51] => B [52] => C [53] => C [54] => D [55] => D [56] => E [57] => E [58] => D [59] => D [60] => [61] => [62] => 4 [63] => 4 [64] => 4 [65] => 4 [66] => 4 [67] => 4 [68] => 4 [69] => 3 [70] => A [71] => B [72] => C [73] => D [74] => E [75] => D [76] => C [77] => B [78] => A [79] => B [80] => C [81] => D [82] => E [83] => D [84] => C [85] => B [86] => A [87] => B [88] => C [89] => D [90] => E [91] => D [92] => C [93] => B [94] => A [95] => B [96] => C [97] => D [98] => E [99] => D [100] => C [101] => B [102] => A [103] => B [104] => C [105] => D [106] => E [107] => D [108] => C [109] => B [110] => A [111] => B [112] => C [113] => D [114] => E [115] => D [116] => C [117] => B [118] => A [119] => B [120] => C [121] => D [122] => E [123] => D [124] => C [125] => B [126] => A [127] => B [128] => C [129] => D [130] => [131] => )
---------------
1


Array ( [0] => )
---------------
2


Array ( [0] => )
---------------

Pelo que percebi, estou pegando uma linha a mais, já que são só duas, e a segunda não está aparecendo. Se alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seu for assim amigo.

 

for($i = 0; $i < $linhas; $i++){
Você pode também utilizar a função fgets() para ler seu arquivo. Veja os exemplos do manual,

acredito que esta função faz o que você precisa de forma mais simples.

 

Leia o link abaixo com carinho.

 

http://www.php.net/manual/

 

E estude mais sobre lógica de programação. Assim essas simples dúvidas não serão

mais pedras em seu caminho ^_^

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.