Jump to content


Photo

Problema Com Leitura De Arquivo Txt


  • Faça o login para participar
3 replies to this topic

#1 Gestione Web

Gestione Web

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Rio Grande do Sul
  • Interesses:Webdesign, programação php, mysql.

Posted 18/03/2011, 12:53

Caros Srs.

Estou desenvolvendo uma importação de grupos e produtos de um sistema já existente porém ao ler algumas linhas que apresentam . o script retorna apenas o que vem antes do .

Exemplo de linha a ser lida:

MAT. ELETRICO - CX. LUZ

Quando uso o explode para separar os itens do grupo mat. eletrico do sub grupos cx. luz ele ta retornando apenas o MAT como depois tem um . (ponto) ele não retorna correto.

Deveria retornar
variavel_explode[0] = MAT. ELETRICO
variavel_explode[1] = CX. LUZ

Para que eu grave corretamente no banco de dados do site da empresa, já que estas informações estão sendo retiradas do sistema interno da empresa.

Precisamos disso para manter o banco do site atualizado com o banco da empresa.

Fico no aguardo de um auxilio pq não to sabendo o que fazer, ja tentei substr para o ponto e nada, o cliente tem visita comigo hoje a tarde e isso ta me matando.

Obrigado aos colegas!

M. Antunes
Gestione Soluções em Web e TI
www.gestioneweb.com.br
M. Antunes
marcio@gestioneweb.com.br
http://www.gestioneweb.com.br/

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 18/03/2011, 13:22

Está usando o explode como?

#3 Gestione Web

Gestione Web

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Rio Grande do Sul
  • Interesses:Webdesign, programação php, mysql.

Posted 18/03/2011, 13:45

Está usando o explode como?


Olá!

A linha que vem exportada do sistema interno tem espaços na segunte formatação:

*** na postagem o sistema do forum ta cortando os espaços, mas tem 4 espaços antes do 001 e mais 7 espaços entre o 001.001 e o ALVENARIA - CIMENTO, por isso a contagem do substr. Vou exemplificar os espaços na linha utilizando o *

****001.001*******ALVENARIA - CIMENTOS

Então eu consegui resolver provisoriamente com substr da seguinte forma:

aqui vai a leitura depois de aberto o file txt onde cada linha fica armazenada na variavel $arq

for ($a = 0; $a < count($arq); $a++) {

// aqui ele retira o grupo: 001
$grupos = substr("$arq[$a]",0,7);

// aqui ele retira o subrgupo: 001
$subgrupo = substr("$arq[$a]",8,3);

// aqui ele verifica o tamanho da linha e diminui os 17 primeiros caracteres para ter o restante que é o nome do grupo e subgrupo: ALVENARIA - CIMENTOS
$caracteres_linha = strlen($arq[$a]);
$resto_nomes = $caracteres_linha - 17;

//aqui ele separa o nome do grupo do nome do subgrupo
$nome_grupos = substr("$arq[$a]",17,$resto_nomes);
$nomes = explode(" - ", $nome_grupos);

}
A principio deu certo, Vou gravar pra ver se rola gravar se não existe e atualizar se existe o grupo ou subgrupo com mesmo ID já gravado.

Obrigado pela atenção vou testar e posto o resultado.

Edição feita por: Gestione Web, 18/03/2011, 13:47.

M. Antunes
marcio@gestioneweb.com.br
http://www.gestioneweb.com.br/

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 18/03/2011, 14:07

Pra mim parece certo. Não entendi o problema. Só não precisa contar o tamanho da linha e subtrair 17. Se você omitir o terceiro parâmetro, substr já pega até o final.

$nome_grupos = substr("$arq[$a]", 17);





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq