Ir para conteúdo
Fórum Script Brasil
  • 0

Substituir linhas do txt mantendo o restante da estrutura


Luis Vagner

Pergunta

Pessoal consegui fazer um script que pega determinadas linhas do txt e coloca um texto segundo suas condições. O problema é que ele só está gravando as linhas que foram alteradas, como faço para ele substituir as respectivas linhas mas manter as outras linhas que não sofreram alteração?

$arquivo = "Conversao_09032009_0758.txt";

//Verifica se o arquivo existe

if (file_exists($arquivo)) {

$fp = fopen($arquivo,"r+");

$f_contents = file ($arquivo);

//Se o arquivo tiver algum conteúdo

if ($f_contents == TRUE){

foreach ($f_contents as $linha) {

$novo = substr($linha,0,48);

$pega_conteudo = substr($novo,0,42);

$corta = substr($linha,42,1);

$cond1 = substr($linha,38,1);

$cond2 = substr($linha,39,1);

if ($cond1=="9" and $cond2=="1"){

$alt = $pega_conteudo."SMT ";

}elseif ($cond1=="9" and $cond2=="2"){

$alt = $pega_conteudo."SBC ";

}elseif ($cond1=="9" and $cond2=="3"){

$alt = $pega_conteudo."PIR ";

}elseif ($cond1=="9" and $cond2=="4"){

$alt = $pega_conteudo."DID ";

}elseif ($cond1=="9" and $cond2=="5"){

$alt = $pega_conteudo."JAQ ";

}elseif ($cond1=="9" and $cond2=="6"){

$alt = $pega_conteudo."STO ";

}elseif ($cond1=="9" and $cond2=="7"){

$alt = $pega_conteudo."STL ";

}

if ($corta == " "){

//preg_match($novo, $linha);

$string .= str_replace($novo, $alt, $linha);

// move o ponteiro para o inicio pois o ftruncate() não fara isso

rewind($fp);

// truca o arquivo apagando tudo dentro dele

ftruncate($fp, 0);

// reescreve o conteudo dentro do arquivo

if (!fwrite($fp, $string)) die('Não foi possível atualizar o arquivo.');

}else{

echo "Linha não atualizada <br>";

}

}

fclose($fp);

}//Se não tiver nenhum conteúdo no arquivo mostra a mensagem

else{

echo "O arquivo $arquivo não tem nenhum conteúdo!";

}

}//Se não existir o arquivo mostra a mensagem

else {

echo "O arquivo $arquivo não existe";

}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...