Helton,Apesar do tempo, conseguiu resolver o problema?Não conheço muito PHP, mas sou especialista em cobol e gostaria de ter essa solução.
--
Você recebeu esta mensagem porque está inscrito no Google Groups "PHP Avançado".
Para postar nesse grupo, envie e-mail phpav...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpavancado...@googlegroups.com
Para mais opções, visitem este grupo em http://groups.google.com.br/group/phpavancado
Tudo sobre php: http://www.phpavancado.net/
Documentação PHP: www.php.net
Bem, entendo um pouco das duas linguagens, e uma das coisas é correta:Para leitura de arquivos (geralmente .dat) deve-se conhecer a estrutura dos arquivos, pois geralmente eles são indexados por posição de caracteres, com seus determinados índices. Isso também pode ser obtido se analisado o código-fonte do programa, caso contrário é muito difícil obter-se a engenharia reversa do mesmo.Outra coisa é como serão utilizados os dados no php, se em arrays ou em banco de dados. Em qualquer um dos casos, um arquivo deve ser aberto para poder ser lido. Para tanto, usa-se o comando 'fopen' cuja sintaxe é:fopen ("nome do arquivo relativo ao caminho da aplicação php no servidor","tipo da leitura/escrita");No site da w3schools existe um tutorial que ensina a manipular arquivos de texto com php mais detalhado.Demonstrando como um exemplo, imaginemos um arquivo cobol simples de nome "dados.dat" com dois campos, um com código, de 4 dígitos e um com nome de 30 dígitos armazenando em um array:0001FULANO0002SICLANOeof(fim do arquivo)Este é o código utilizado para este arquivo específico:$arquivo=fopen("dados.dat","r") or die ("Não foi possível abrir o arquivo!");while(!feof($arquivo)){$codigo=$nome=""; //inicialização das variáveis$linha = fgets($arquivo);for ($ponteiro=0;$ponteiro<4;$ponteiro++)$codigo.=$linha[$ponteiro];for (;isset($linha[$ponteiro];$ponteiro++) //ponteiro já está inicializado e na posição correta, não necessário reiniciá-lo$nome.=$linha[$ponteiro];$dados[]=array ('codigo' => $codigo , 'nome' => $nome);}fclose($arquivo); // fecha o arquivoEntanto, podemos abir o arquivo de maneira segura da seguinte maneira:$arquivo = fopen("dados.dat","r") or die ("Erro ao abrir arquivo!");Para ler os dados, devemos lê-lo até o fim do arquivo, por isso usaremos um laço while:while (!feof($arquivo)) { <código a ser executado> }então, leremos uma linha e atribuiremos a uma variável temporária:$linha=fgets($arquivo);Igual à linguagem C, uma string é um array (vetor) de caracteres, portanto, se quiser pegar um caractere específico, basta utilizar-se da variável mais a posição do caractere como array, então, alguns laços for resolvem o problema (lembrando que array em php começa em 0 e não em 1 como outras linguagens):for (<inicialização>;<enquanto esta condição for verdadeira>; <o que fazer no final de cada iteração>) { <código a ser executado>for ($ponteiro=0;$ponteiro<4;$ponteiro++) // fazer o comando enquanto o ponteiro for menor que 4
$codigo.=$linha[$ponteiro]; //pega o caractere atual da linha, representado pelo ponteiro e junta-o ao final da string codigo (por isso o ponto-igual)O mesmo procedimento acima ocorre com a segunda sequencia, mas como vamos até o final da linha, usamos isset[ponteiro] para saber se este caractere existe ou não.Podemos então ou adicioná-lo a um banco de dados usando SQL ou a um array, neste caso vamos adicioná-lo a um array:Arrays são representados por $variável[item], caso atribua-se um valor a um vetor sem o item expresso, o php entende q vc quer incluir um nov item no final:$dados[]=array ('codigo' => $codigo , 'nome' => $nome);'codigo' e 'nome' são índices verbais e opcionais. Caso queira pode procurar o item como $dados[0][0] ou $dados['codigo'][0] que resultam no mesmo item. Se não os quiser omita o nome codigo e o conector =>.Então fecha-se o arquivo. Caso queira mostrar o conteúdo dos arquivos, use o comando print_r e um foreach para mostrar o array:foreach($dados as $value){print_r($value);echo "<br/>";}Espero ter contribuído com algo
Em quarta-feira, 26 de dezembro de 2007 10h20min58s UTC-2, Helton Eduardo Ritter escreveu:
--
--
Você recebeu esta mensagem porque está inscrito no Google Groups "PHP Avançado".
Para postar nesse grupo, envie e-mail phpav...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpavancado...@googlegroups.com
Para mais opções, visitem este grupo em http://groups.google.com.br/group/phpavancado
Tudo sobre php: http://www.phpavancado.net/
Documentação PHP: www.php.net