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

Problema Com Leitura De Arquivo Txt
Started By Gestione Web, 18/03/2011, 12:53
3 replies to this topic
#2
Posted 18/03/2011, 13:22
Está usando o explode como?
#3
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.
#4
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)