Ir ao conteúdo
  • Cadastre-se

PHP + txt


diego.magno

Posts recomendados

Pessoal bom dia,

poderia me ajudar por favor?

estou puxando algumas informações do txt e estou com algumas duvidas, abaixo explicarei.

Eu retiro um txt de um outro sistema que vem algumas informações de Sigla e um percentual.

Dentro do sistema que criei eu puxo direto do banco de dados esta sigla e faço uma busca no txt que seja igual a esta sigla.

só que o que me importa é o percentual que é diferente de usuário para usuario.

Exemplo

Trago do banco de dados a sigla AAD.

no meu txt está assim

AAD ; 10,5

ADC; 06,2

BGF ; 10,9

como consigo buscar este resultado do percentual que vem a frente da sigla?

da forma onde quando entro no usuário ADC já busca diretamente o 06,2

Com este script abaixo consigo trazer a sigla mas não o 10,5 por exemplo.


$pesq_usuario = $sigla_usuario; //busco no txt a sigla do usuario

$arquivo = "teste.txt"; //ARQUIVO TXT A SER PESQUISADO

$ponteiro = fopen($arquivo, "r");//ABRE O ARQUIVO

$conteudo = fread($ponteiro, filesize($arquivo)//LÊ O ARQUIVO
);

fclose($ponteiro);//FECHA O ARQUIVO

//EXPLODE AS LINHAS QUANDO PULAR LINHA
$linha = explode("
", $conteudo);

for($i = 0; $i <= sizeof($linha);
$i++) {

$parte = explode(";",$linha[$i]);//SEPARANDO OS DADOS POR ; (PONTO E VIRGULA)


$parte_user = trim($parte[0]); //NOME DO USUÁRIO

if( ($pesq_usuario == $parte_user) ) { //VERIFICA SE O USUÁRIO DIGITADO EXISTE
$existe++;
}
}

if($existe)
echo "$pesq_usuario";
else
echo "$pesq_usuario";

Link para o comentário
Compartilhar em outros sites

Nessas horas as expressões regulares aceleram bastante o serviço, veja esse exemplo abaixo


$meu_txt = "AAD ; 10,5
ADC; 06,2
BGF ; 10,9";
preg_match_all('@(\w+)[ ;]*([0-9,]+)@m', $meu_txt, $arr);
$resultados = array_combine($arr[1], $arr[2]);

foreach($resultados as $usuario => $porcentagem)
{
echo "Aqui você tem o $usuario e a $porcentagem \n";
}

if(array_key_exists('ADC', $resultados))
echo 'ADC está cadastrado';

No link abaixo você vai encontrar uma referencia sobre expressões regulares

http://php.net/manual/pt_BR/reference.pcre.pattern.syntax.php

você também pode pegar o texto assim:


$meu_txt = file_get_contents('arquivo.txt');

Link para o comentário
Compartilhar em outros sites

Anderson Danilo,

achei interessante esta forma que voce me mostrou de inserir os dados numa variavel;

$meu_txt = "

AAD ; 10,5

ADC ; 06,2

BGF ; 10,9";

só que o problema que quando dou um echo, ela exibe todos os usuarios.

gostaria de tipo assim, se eu abrir a pagina do AAD aparecesse apenas a porcentagem dele, quando fosse para o ADC abrisse o dele.

tem como eu restringir a isto?

Obrigado pela ajuda

Link para o comentário
Compartilhar em outros sites

No exemplo que eu citei o array $resultados tem todos os clientes, uma forma rápida de fazer o que você quer é só exibir o cliente desejado


$meu_usuario = 'AAD';
if(array_key_exists($meu_usuario, $resultados))
echo 'Sua porcentagem é: ' . $resultados[$meu_usuario];
else
echo 'Não há nada cadastrado para o seu usuário';

é uma forma rápida porém é meio gambiarra, pois esta carregando todos os usuarios quando você precisa de só um.

Porque você não importa esse txt para um bd?

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...