Jump to content
Fórum Script Brasil
  • 0

Substituir Texto Dentro De 1 .txt


GtOkAi

Question

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 to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Lucas Phillip
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...