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

Substituir Texto Dentro De 1 .txt


GtOkAi

Pergunta

Bom... ontem estava com 1 dúvida mais já resolvi, agora estou com outra, estou tentando fazer substituir por exemplo TESTE1 por TESTE2 dentro do arquivo test.txt, ... para isso estou usando str_replace mais não está funcionando, tem algo de errado com script? ou estou usando function errada?

<?
        if($_POST){
        $guildname = $_POST['guildname'];
        $nguildname = $_POST['nguildname'];
        $sub1 = $_POST['sub1'];
        $sub2 = $_POST['sub2'];
        $sub3 = $_POST['sub3'];
        $nsub1 = $_POST['nsub1'];
        $nsub2 = $_POST['nsub2'];
        $nsub3 = $_POST['nsub3'];
        ob_start();
        $arquivo = fopen("C:\\guilds.txt",'a');
        if (!$arquivo){
        echo "erro";
        exit;
        }
        $arquivo2 = str_replace($guildname,$nguildname, $arquivo2);
        $arquivo2 = str_replace($sub1,$nsub1, $arquivo2);
         $arquivo2 = str_replace($sub2,$nsub2, $arquivo2);
         $arquivo2 = str_replace($sub3,$nsub3, $arquivo2);
        fwrite($arquivo,"$arquivo2\r\n");
        fclose($arquivo);
        @header("Location: enviado.php");
        } else {
        echo("test");
        }
?>

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

Aew, to na facu então só dei uma olhada rápida, mas vê se o problema é esse:

quando você declara $arquivo2 pela 1 vez e utiliza str_replace, você deveria utilizar $arquivo, e não $arquivo2 na váriavel que você vai substituir. porque do jeito que está, você está utilizando str_replace no próprio $arquivo2, só que ela não existe ainda.

entendeu?? :D

tenta assim e vê se funciona:

$arquivo2 = str_replace($guildname,$nguildname, $arquivo);
        $arquivo2 = str_replace($sub1,$nsub1, $arquivo2);
        $arquivo2 = str_replace($sub2,$nsub2, $arquivo2);
         $arquivo2 = str_replace($sub3,$nsub3, $arquivo2);

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Lucas, eu declarei como você disse como $arquivo ao invés de $arquivo2, só que ainda não substituiu ^^

também tentei desse jeito:

$arquivo2 = str_replace($guildname,$nguildname, $arquivo);
        $arquivo2 = str_replace($sub1,$nsub1, $arquivo);
        $arquivo2 = str_replace($sub2,$nsub2, $arquivo);
        $arquivo2 = str_replace($sub3,$nsub3, $arquivo);

declarando $arquivo em todas, e assim também não substituiu.

isso não estaria no lugar errado? ou a linha do fwrite?

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Dê uma olhada na documentação do PHP, o que diz sobre a função fopen().

 
'r'Abre somente leitura; coloca o ponteiro do arquico no começo do arquivo.
'r+'Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.
'w'Abre para escrita somente; coloca o ponteiro do arquivo no começo do arquivo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo.
'w+'Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no começo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo.
'a'Abre para escrita somente; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo.
'a+'Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo.
'x'Cria e abre o arquivo para escrita somente; coloca o ponteiro no início do arquivo. Se o arquivo já existe, a chamada a fopen() irá falhar, retornando FALSE e gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags O_EXCL|O_CREAT numa chamada a open(2). Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais.
'x+'Cria e abre um arquivo para escrita e leitura; coloca o ponteiro do arquivo no início. Se o arquivo já existe, a chamada a fopen() irá falhar, retornando FALSE e gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags O_EXCL|O_CREAT numa chamada a open(2). Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais.

Não seria o caso de utilizar w+ ?

Link para o comentário
Compartilhar em outros sites

  • 0
Olá Lucas, eu declarei como você disse como $arquivo ao invés de $arquivo2, só que ainda não substituiu ^^

também tentei desse jeito:

$arquivo2 = str_replace($guildname,$nguildname, $arquivo);
        $arquivo2 = str_replace($sub1,$nsub1, $arquivo);
        $arquivo2 = str_replace($sub2,$nsub2, $arquivo);
        $arquivo2 = str_replace($sub3,$nsub3, $arquivo);
declarando $arquivo em todas, e assim também não substituiu. isso não estaria no lugar errado? ou a linha do fwrite? Obrigado.
Aew.. eu não falei pra utilizar $arquivo em todas... era pra usar só na 1 :D olha o seu e o meu pra você ver a diferença:
seu:
$arquivo2 = str_replace($guildname,$nguildname, $arquivo);
$arquivo2 = str_replace($sub1,$nsub1, $arquivo);
$arquivo2 = str_replace($sub2,$nsub2, $arquivo);
$arquivo2 = str_replace($sub3,$nsub3, $arquivo);

meu:
$arquivo2 = str_replace($guildname,$nguildname, $arquivo);
$arquivo2 = str_replace($sub1,$nsub1, $arquivo2);
$arquivo2 = str_replace($sub2,$nsub2, $arquivo2);
$arquivo2 = str_replace($sub3,$nsub3, $arquivo2);

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Aew... outra coisa então... você manda abrir o arquivo, mas você não lê o que está no arquivo. Utilize o comando fread para fazer isso...

ve se assim vai funcionar:

<?
        if($_POST){
        $guildname = $_POST['guildname'];
        $nguildname = $_POST['nguildname'];
        $sub1 = $_POST['sub1'];
        $sub2 = $_POST['sub2'];
        $sub3 = $_POST['sub3'];
        $nsub1 = $_POST['nsub1'];
        $nsub2 = $_POST['nsub2'];
        $nsub3 = $_POST['nsub3'];
        ob_start();
    $filename = "C:\\guilds.txt";
        $open = fopen($filename,'r+');
    $arquivo = fread($open, filesize($filename));        
        if (!$arquivo){
        echo "erro";
        exit;
        }
        $arquivo2 = str_replace($guildname,$nguildname, $arquivo);
        $arquivo2 = str_replace($sub1,$nsub1, $arquivo2);
        $arquivo2 = str_replace($sub2,$nsub2, $arquivo2);
        $arquivo2 = str_replace($sub3,$nsub3, $arquivo2);
        fwrite($open,"$arquivo2\r\n");
        fclose($open);
        @header("Location: enviado.php");
        } else {
        echo("test");
        }
?>

obs: eu não testei... mas testa ai e se não funcionar tenta arrumar o q está errado..

falou

Editado por Lucas Phillip
Link para o comentário
Compartilhar em outros sites

  • 0

bom.. o comando "filesize" retorna erro se o arquivo não existe ou seu tamanho é 0. Quando você abre o arquivo com w+, você limpa o arquivo e ele fica com 0 de tamanho, e o comando filesize só é executado depois disso. :blink:

faz o seguinte... abre o arquivo com w+, mas coloca o comando filezise fora do fread, e antes do fopen.. ai deve resolver seu problema... algo assim:

+- assim:

$filename = "C:\\guilds.txt";
$size = filesize($filename);
$open = fopen($filename,'w+');
$arquivo = fread($open, $size);

acho que assim deve dar :ph34r:

falou

Link para o comentário
Compartilhar em outros sites

  • 0

opa consegui... ^^

$open = fopen($filename,'r');
        $arquivo = fread($open, filesize($filename));
        $open = fopen($filename,'w+');

foi jogar o $open com r.... depois de dar o fread botar o $open dessa vez com w+...

Obrigado ai pelo suporte,

Abraços

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