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

como alterar linha do arquivo TXT


Guest alexandre_prog

Pergunta

Guest alexandre_prog

Pessoal, já pesquisei muito sobre como alterar uma determinada parte de um arquivo .txt, mas não estou achando, ler a posição que quero do arquivo, até consegui, mas alterar essa posição ainda não,,,

como fazer???

Obrigado!!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Uma característica é que, na teoria, não tem como mudar apenas uma linha..

Como o meu xará disse, o que se faz é ler o conteúdo do arquivo para um array, modifica o arquivo e reescreve tudo de novo no arquivo..

Mudar somente determinada linha, até onde sei, não dá..

Link para o comentário
Compartilhar em outros sites

  • 0
Guest alexandre_prog
Como falei antes, da para mudar sim... pelo menos com a função file sim..

Muito Obrigado,,, até ai está Beleza pra mim, mas como eu faço pra alterar, porque 'pegar' essa determinada linha não é tão difícil, mas se eu fizer algo assim:

fopen ("$arquivo.txt", "w");

ele limpará todo o arquivo, então como abrir ele pra edição, e alterar somente aquela linha??

Muito Obrigado!!

Link para o comentário
Compartilhar em outros sites

  • 0

Você vai ter que ler o arquivo, passar para um array (como já foi dito), alterar o índice específico do array e ai regravar tudo no arquivo, note que essas funções não substituem bancos de dados (onde você pode fazer exatamente o que está tentado).

Link para o comentário
Compartilhar em outros sites

  • 0
Guest alexandre_prog

Será mesmo que vou ter que ler o arquivo e alterar o que tiver que alterar, e depois gravar TUDO novamente???

Será que seria viável??

Não terá muitos dados nesse arquivo TEXTO, mas será que vale a pena fazer essa gambiarra???

Muito Obrigado!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo é so fazer assim:


<?php

//Ler o arquivo
$linhas = explode("\n", file_get_contents("./arquivo.txt"));

//Ler somente o conteudo da linha [0]do array ou seja linha 1 do texto
$linha_n = $linhas[0];

// abre o arquivo colocando o ponteiro de escrita no final
$arquivo = fopen('arquivo.txt','r+');
if ($arquivo) {
  while(true) {
    $linha = fgets($arquivo);
    if ($linha==null) break;
 
    // busca na linha atual o conteudo que vai ser alterado
    if(preg_match("/$linha_n/", $linha)) {
    $string .= str_replace("$linha_n", "Diego", $linha);
    } else {
    // vai criar uma nova string
    $string.= $linha;
}
}
    // move o ponteiro para o inicio do arquivo
    rewind($arquivo);
    
    // Apaga o conteudo
    ftruncate($arquivo, 0);
    
    // reescreve o conteudo dentro do arquivo
    if (!fwrite($arquivo, $string)) die('Não foi possível atualizar o arquivo.');
    echo 'Arquivo atualizado com sucesso';
    fclose($arquivo);
}

?>
 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 14/02/2017 at 15:44, Diego Augusto disse:

Amigo é so fazer assim:


<?php

//Ler o arquivo
$linhas = explode("\n", file_get_contents("./arquivo.txt"));

//Ler somente o conteudo da linha [0]do array ou seja linha 1 do texto
$linha_n = $linhas[0];

// abre o arquivo colocando o ponteiro de escrita no final
$arquivo = fopen('arquivo.txt','r+');
if ($arquivo) {
  while(true) {
    $linha = fgets($arquivo);
    if ($linha==null) break;
 
    // busca na linha atual o conteudo que vai ser alterado
    if(preg_match("/$linha_n/", $linha)) {
    $string .= str_replace("$linha_n", "Diego", $linha);
    } else {
    // vai criar uma nova string
    $string.= $linha;
}
}
    // move o ponteiro para o inicio do arquivo
    rewind($arquivo);
    
    // Apaga o conteudo
    ftruncate($arquivo, 0);
    
    // reescreve o conteudo dentro do arquivo
    if (!fwrite($arquivo, $string)) die('Não foi possível atualizar o arquivo.');
    echo 'Arquivo atualizado com sucesso';
    fclose($arquivo);
}

?>
 

 

Legal .. Esse escript me serviu.. Obrigado !!!

Link para o comentário
Compartilhar em outros sites

  • 0

Como ficou com minhas ...

<?php
 echo 'Rodando arquivos  .PHP <br>';

 $include="db_stdlibwebseller_saude.php"; //arquivo que deve ser incluido
 
 $arquivos="sau1_sau_prestadores000.php func_consultamedicaprontuarios.php sau1_sau_prestadores002.php edu4_classificacao.RPC.php edu4_classificacao.php"; //arquivos de procura

$linha_n = "db_stdlibwebseller.php";// Procura pela ocorrencia dentro do arquivo

$explode=explode(" ",$arquivos);

foreach ($explode as $key => $value) {
      echo "Arquivo procurado:::".$value."<br>";
 if(file_exists($value)){
          chmod($value, 0777);
     }else{

         echo "<font size='3' color='green'> arquivo não existe::: {$value} </font>";
          continue;
     }

//Ler o arquivo
$linhas = explode("\n", file_get_contents("./{$value}"));

// abre o arquivo colocando o ponteiro de escrita no final
$arquivo = fopen($value,'r+');

if ($arquivo) {

  while(true) {

    $linha = fgets($arquivo);

    if ($linha==null) break;
      
    // busca na linha atual o conteudo que vai ser alterado
    if(preg_match("/$linha_n/", $linha)) {
    
    $string .= str_replace("$linha_n",$include, $linha);
    $mudanca=str_replace("$linha_n",$include, $linha);
                 $countlinha=substr_count($string, "\n");

               echo "<font size='3' color='red'>Padrao encontrado:: {$value}  <br>Linha afetada:::: {$linha} <br> Mudança:: {$mudanca} <br> Linha de ocorrencia ::: {$countlinha} </font>";
                    echo "<br>";

    } else {
    // vai criar uma nova string
    $string.= $linha;
}

}
    // move o ponteiro para o inicio do arquivo
    rewind($arquivo);
    // Apaga o conteudo
    ftruncate($arquivo, 0);

    // reescreve o conteudo dentro do arquivo
    if (!fwrite($arquivo, $string)) die('Não foi possível atualizar o arquivo.');
    fclose($value);
    }
   unset($string);

}

 

 

...
 

Link para o comentário
Compartilhar em outros sites

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,8k
×
×
  • Criar Novo...