faylonxd 0 Denunciar post Postado Novembro 12, 2014 Boa Tarde, estou criando um sistema simples que ira substituir dentro de um TXT, uma palavra de acordo com outra anterior, para ficar mais facil de entender, tenho um arquivo chamado basededados.txt que contem o seguinte conteudo: CREATE TABLE aaacervos ( CONSTRAINT pk_NomeDaTabela PRIMARY KEY(cdacervo), ) CREATE TABLE aaautores ( CONSTRAINT pk_NomeDaTabela PRIMARY KEY(cdautor) ) e eu estou lendo o arquivo linha a linha e quando encontro as palavras CREATE TABLE, pego a palavra seguinte e a coloco numa variavel, e pulo pra proxima linha e quando eu encontro a palavra pk_NomeDaTabela , eu substituo NomedaTabela pela variavel recebida anteriormente. ficando por exemplo2 : CREATE TABLE aaacervos ( CONSTRAINT pk_aaacervos PRIMARY KEY(cdacervo), ) CREATE TABLE aaautores ( CONSTRAINT pk_aaautores PRIMARY KEY(cdautor) ) porem, não estou conseguindo que essa substituição seja salva no arquivo original. Segue o Codigo Fonte que possuo até agora: <?php // Abre o Arquvio no Modo w $arquivo = fopen ('unitednations.txt', 'r+'); // Lê o conteúdo do arquivo while(!feof($arquivo)) { //Mostra uma linha do arquivo $linha = fgets($arquivo, 1024); $busca = 'CREATE TABLE '; $busca2 = 'CONSTRAINT pk_NomeDaTabela PRIMARY KEY'; if(substr($linha, 0, 13) == $busca){ $createprimary = $linha; $primary = explode(" ", $createprimary); } if(substr($linha, 0, 38) == $busca2){ $constraint = $linha; $fk = explode(" ", $constraint); $novafrase = str_replace('NomeDaTabela', $primary[2], $linha); $linha = $novafrase; } echo $linha.'<br>'; } // Fecha arquivo aberto fclose($arquivo); ?> Alguem poderia me ajudar, a salvar o arquivo ficando da maneira que está no exemplo2?? Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Novembro 12, 2014 Não conheço uma forma de fazer isso de forma dinâmica. Você pode fazer o seguinte: <?php $arquivo = fopen ('unitednations.txt', 'r+'); $busca = 'CREATE TABLE '; $busca2 = 'CONSTRAINT pk_NomeDaTabela PRIMARY KEY'; while(!feof($arquivo)) { $linha = fgets($arquivo, 1024); if(substr($linha, 0, 13) == $busca){ $novo = $linha . "\r\n"; $segunda = fgets($arquivo, 1024); $primary = substr($linha, strlen($busca)); // pega o nome da tabela $linha2 = str_replace('NomeDaTabela', $primary, $segunda); $novo = $linha2 . "\r\n"; } else $novo = $linha . "\r\n"; } // Fecha arquivo aberto fclose($arquivo); // Salva novo conteúdo no arquivo file_put_contents('unitednations.txt', $novo); ?> Compartilhar este post Link para o post Compartilhar em outros sites
faylonxd 0 Denunciar post Postado Novembro 12, 2014 dessa maneira ele esta apagando todo o conteudo e nao está salvando alterado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 12, 2014 Essa variável $novo tem que ser iniciada com uma string vazia antes do while. E dentro do loop tem que concatenar 0 valor de $linha a $novo, pra adicionar cada nova linha à string $novo Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Novembro 13, 2014 Essa variável $novo tem que ser iniciada com uma string vazia antes do while. E dentro do loop tem que concatenar 0 valor de $linha a $novo, pra adicionar cada nova linha à string $novo Foi mal, na correria eu esqueci desses 2 detalhes. $novo tem que ser declarado antes, e ao invés de $novo = $linha; deveria estar $novo .= $linha; dessa maneira ele esta apagando todo o conteudo e nao está salvando alterado Foi o que eu disse no meu post anterior. Não conheço uma forma de ler e alterar o conteúdo de forma dinâmica com o PHP. E não vejo diferença nenhuma no resultado. O interessante seria até salvar o arquivo com outro nome, para não perder o original. Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 14, 2014 Mande um exemplo de como está o arquivo, e de como deve ficar. Compartilhar este post Link para o post Compartilhar em outros sites