Fórum Dix
Bem-vindo ao Fórum Dix. Aqui você poderá encontar conteúdos como:

#Habbo
#Transformice
#Minecraft
#DDTank
#SAMP
#Design
#Web
#Combat Arms
#WEBNODE
#Noticias

Clique em registrar e inicie sua jornada por aqui.
Fórum Dix
Bem-vindo ao Fórum Dix. Aqui você poderá encontar conteúdos como:

#Habbo
#Transformice
#Minecraft
#DDTank
#SAMP
#Design
#Web
#Combat Arms
#WEBNODE
#Noticias

Clique em registrar e inicie sua jornada por aqui.
    EncurtaNET
    EncurtaNet

    Foto

    MANIPULANDO ARQUIVOS COM PHP



    • Por favor, inicie sesión para responder

    Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

    #1
    Fuera de línea
    Lira
    Dom Set 16, 2012 9:29 am


    Lira

    Administrador

    Administrador
    1 - Criando os arquivos

    Para começar, vamos primeiro criar o nosso arquivo. Para isso existe a função fopen().
    Com esta função podemos criar qualquer arquivo novo. Sua sintaxe é a seguinte:
    Código:
    fopen ($nomedoarquivo, $modo);
    Como podemos ver, a função fopen possui dois argumentos: O nome do arquivo e o modo que esse arquivo será criado.

    $nomedoarquivo - O nome do arquivo pode conter o caminho absoluto onde você deseja criar o seu arquivo. Exemplo, 'www/programa/arquivo.txt'.
    $modo - O modo indica as permissões de acesso para o arquivo que foi criado. Por exemplo, ele pode ser criado apenas para leitura (consulta de dados) ou para escrita e leitura.
    Segue abaixo a tabela com os modos de arquivos retirados da documentação oficial do PHP.
    Modo Descrição
    'w' Abre o arquivo para apenas escrita; 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.
    'r' Abre o arquivo somente para leitura; coloca o ponteiro de escrita no começo do arquivo. [Retorna um erro caso o arquivo não exista e não tenta cria-lo.]
    'r+' Abre para leitura e escrita; coloca o ponteiro de escrita no começo do arquivo. [Retorna um erro caso o arquivo não exista e não tenta cria-lo.]
    'a' Abre para somente para escrita somente; coloca o ponteiro do arquivo no final. Se o arquivo não existir, tenta criá-lo.
    'a+' Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no final. Se o arquivo não existir, 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, gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. 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, gerando um erro nível E_WARNING. Se o arquivo não existe, tenta criá-lo. Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais.
    Vamos a alguns exemplos práticos:

    Exemplo- criar um novo arquivo para escrita
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','w');
    if ($arquivo == false) die('Não foi possível criar o arquivo.');
    ?>
    O código acima cria um novo arquivo (para escrita somente) no diretório corrente do arquivo PHP executado.
    Tenha cuidado pois o modo 'w' coloca o ponteiro de escrita no início do arquivo. Se o arquivo já existir, ele deletará todo o conteúdo.
    Se a função funcionar ele retorna o ponteiro do arquivo. Mas se a função falhar por qualquer motivo, a função retorna false.

    Exemplo - criar um novo arquivo para leitura e escrita
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','w+');
    if ($arquivo == false) die('Não foi possível criar o arquivo.');
    ?>
    Como no exemplo 1, o código acima cria um novo tanto para leitura como para escrita no diretório corrente do arquivo PHP executado.
    O modo 'w+' coloca o ponteiro no início do arquivo. Se o arquivo já existir, ele deletará todo o conteúdo.

    Exemplo - abrir um arquivo para leitura com o modo 'r'

    'E se eu não quiser deletar o conteúdo e só acrescentar mais informações quando o arquivo já existir???'
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    if ($arquivo == false) die('O arquivo não existe.');
    ?>
    O modo 'r' abre o arquivo. Ele coloca o ponteiro no início do arquivo e lê todo seu conteúdo até o final. Use o modo 'r+' para ativar também a escrita junto com a leitura. Como o ponteiro é posicionado no início do arquivo, o novo conteúdo ficará no início e não no final. Caso o arquivo não exista, ele retorna um erro e não tenta cria o arquivo. Caso você queira criar o arquivo caso ele não exista, você pode usar o modo 'a'.

    Exemplo - O modo 'a'

    'E se eu quiser posicionar o ponteiro no final do arquivo???'
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','a');
    if ($arquivo == false) die('Não foi possível criar o arquivo.');
    ?>
    Da mesma forma que o modo 'w', você pode usar o modo 'a' ou 'a+' para criar o seu novo arquivo com as permissões de leitura/escrita respectivamente. Se o arquivo já existir, ele não irá truncar o arquivo (não deleta nenhum conteúdo) e irá colocar o ponteiro no final para que a leitura/escrita continue a partir daí.

    2 - Lendo arquivos

    Agora que já aprendemos a criar e abrir nossos arquivos, vamos ver como se faz para lê-los. Para isso temos a função fgets(). A função fgets() é usada para ler um arquivo linha por linha. Ela aceita dois tipos de parâmetros, veja:
    Código:
    fgets($ponteiro, $tamanho);
    Os argumentos são o ponteiro e o tamanho em bytes.

    $ponteiro - O ponteiro aqui utilizado, está armazenado na variável que você usou para abrir ou criar o arquivo.
    $tamanho - Como já foi dito, é o tamanho em número de bytes que deve ser lida a linha do arquivo. Se não for especificado, o programa irá ler até o final da linha (até um número máximo de 1024 caracteres).
    Exemplo - lendo a primeira linha
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    if ($arquivo == false) die('Não foi possível abrir o arquivo.');
    $linha = fgets($arquivo);
    echo $linha;
    fclose($arquivo);
    ?>
    No código acima abrimos um arquivo com o modo 'r' que posiciona o ponteiro no início do arquivo. Depois efetuamos o comando fgets() sem o parâmetro de tamanho. Isso quer dizer que toda primeira linha do arquivo está sendo lida.

    Observe também que utilizamos a função fclose() para fechar o arquivo que está aberto. Procure imaginar como se, em seu desktop, você tivesse aberto um arquivo, alterado-o e depois fechado. O processo é o mesmo, e temos funções específicas para cada uma dessas ações (abrir, alterar e fechar).

    Exemplo - lendo um determinado número de bytes
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    if ($arquivo == false) die('Não foi possível abrir o arquivo.');
    $linha = fgets($arquivo, 64);
    echo $linha;
    fclose($arquivo);
    ?>
    Agora nosso programa irá imprimir os primeiro 64 palavras da primeira linha do 'meuarquivo.txt'.

    Exemplo - retornando o arquivo inteiro linha por linha

    No código abaixo usaremos um loop continuo (eterno) pegando linha por linha do arquivo. Quando é verificado que a variável linha retornou vazia, ele da um break que para a repetição e fecha o arquivo. Fica a pergunta: 'E se meu arquivo tiver uma linha vazia?'. Não existe linha vazia entre o início e o final de um documento. Mesmo que determinada linha não tenha nada escrito, ela contém um marcador que indica a quebra de linha.
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    if ($arquivo == false) die('Não foi possível abrir o arquivo.');
    while(true) {
       $linha = fgets($arquivo);
       if ($linha==null) break;
       echo $linha;
    }
    fclose($arquivo);
    ?>
    Outra forma mais interessante para ler um arquivo linha por linha (somente ler) é usando a função feof(). Sua função é detectar o final de um arquivo (f-End-Of-File). Porém, como já foi dito, essa função só é indicada caso você queria somente ler o arquivo, já que não funcionará com arquivos abertos com as opções 'a', 'w' e 'x'.
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    if ($arquivo == false) die('Não foi possível abrir o arquivo.');
    // imprime linha por linha ate detectar o final
    while(!feof($arquivo)) {
       echo fgets($arquivo). '<br />';
    }
    fclose($arquivo);
    ?>
    Observação: Sistemas operacionais diferentes tem convenções de delimitação de linhas diferentes. Quando você escreve num arquivo e deseja inserir uma quebra de linha, você precisa utilizar o(s) caractere(s) de fim de linha adequado(s) em seu sistema operacional. Sistemas baseados no Unix utilizam n como final de linha, sistemas baseados no Windows usam rn e Mac OS usa r.

    Exemplo - lendo todo arquivo em um único passo

    Em muitos casos temos que ler o arquivo todo. E ler linha por linha nesses casos dá mais trabalho. Nesses casos utilizamos a funcao file_get_contents() que retorna todo o conteúdo de determinado arquivo. Veja como ela funciona:
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','r');
    $string = file_get_contents('meuarquivo.txt');
    echo $string;
    fclose($arquivo);
    ?>
    O código acima lê todas informações contidas no arquivo 'meuarquivo.txt'. Ressaltando que não é recomendado ler arquivos muitos grandes de uma só vez. Nesse caso é recomendado ler o arquivo em partes.

    3 - Escrevendo nos arquivos

    Escrever nos arquivos usando PHP é também muito fácil. Primeiro você deve ter certeza que seu arquivo aberto tenha permissão para escrita. Depois basta utilizar a função fwrite e seus parâmetros. Segue a estrutura da função:
    Código:
    fwrite($ponteiro, $string, $tamanho);
    Os argumentos são o ponteiro, a string e o tamanho em bytes.

    $ponteiro - O ponteiro aqui utilizado, está armazenado na variável que você usou para abrir ou criar o arquivo.
    $string - O conteúdo textual que você deseja escrever em seu arquivo.
    $tamanho - É o tamanho em número de bytes que deve ser gravado no arquivo. Opcional.
    Exemplo- escrevendo uma simples linha em um arquivo

    O código abaixo abrimos o arquivo indicado no modo 'w+' permitindo sua escrita. Caso o arquivo não exista, ele será criado. E depois é gravado um pequeno texto em sua linha. É importante observar que o modo 'w' cria arquivos mas também trunca o arquivo caso ele exista, ou seja, deleta todo seu conteúdo assim que ele é aberto.
    Código:
    <?php
    $arquivo = fopen('meuarquivo.txt','w+');
    if ($arquivo) {
       if (!fwrite($arquivo, 'Novo conteúdo')) die('Não foi possível atualizar o arquivo.');
       echo 'Arquivo atualizado com sucesso';
       fclose($arquivo);
    }
    ?>
    Exemplo- escrevendo no início de um arquivo

    Para escrevermos no início do arquivo podemos abri-lo com a opção 'r+'. Porém abriremos ele com a opção 'a+', que coloca o ponteiro no final do arquivo, e utilizaremos a função rewind() que move o ponteiro para o início do arquivo.
    Código:
    <?php
    // abre o arquivo colocando o ponteiro de escrita no final
    $arquivo = fopen('meuarquivo.txt','a+');
    if ($arquivo) {
       // move o ponteiro para o inicio do arquivo
       rewind($arquivo);
       if (!fwrite($arquivo, 'Novo conteúdo')) die('Não foi possível atualizar o arquivo.');
       echo 'Arquivo atualizado com sucesso';
       fclose($arquivo);
    }
    ?>
    Exemplo- escrevendo no final de um arquivo

    Para escrever no final do arquivo, utilizaremos o mesmo comando do exemplo anterior. Porém, não utilizaremos a função rewind() para mudar o ponteiro de posição.
    Código:

    <?php
    // abre o arquivo colocando o ponteiro de escrita no final
    $arquivo = fopen('meuarquivo.txt','r+');
    if ($arquivo) {
       if (!fwrite($arquivo, 'Novo conteúdo')) die('Não foi possível atualizar o arquivo.');
       echo 'Arquivo atualizado com sucesso';
       fclose($arquivo);
    }
    ?>
    4 - Alterar conteúdo

    Concluindo esse tutorial, vamos falar sobre como alterar o conteúdo de um arquivo.

    Na teoria, o que devemos fazer é ler o arquivo, linha por linha, em busca do conteúdo a ser alterado. Vamos colocando tudo dentro de uma nova string. Quando for encontrada a linha com o conteúdo a ser alterado, fazemos as modificações e re-escrevemos o arquivo utilizando-se da nova string.

    No caso de alterar um arquivo, é importante verificarmos primeiro se ele existe. Para isso poderíamos usar a função file_exists() que verifica a existência de um arquivo. Mas como usaremos o parâmetro 'r+' para abrir o arquivo, já será retornado um erro indicando que o arquivo não existe. Isso por que, ao contrário dos outros parâmetros, o 'r' não tenta criar um novo arquivo caso o caminho indicado não exista.

    Para substituir o conteúdo do arquivo original pelo conteúdo alterado, primeiro vamos apagar o conteúdo do arquivo atual. Para isso usaremos a função ftruncate(). Vamos ao código de exemplo:

    Exemplo- lendo e alterando o conteúdo
    Código:
    <?php
    // abre o arquivo colocando o ponteiro de escrita no final
    $arquivo = fopen('meuarquivo.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("/José da Silva:/", $linha)) {
             $string .= str_replace("José da Silva: 27 anos", "José da Silva: 28 anos", $linha);
          } else {
             // vai colocando tudo numa nova string
             $string.= $linha;
          }
       }
       // move o ponteiro para o inicio pois o ftruncate() nao fara isso
       rewind($arquivo);
       // truca o arquivo apagando tudo dentro dele
       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);
    }
    ?>
    É isso pessoal! Para escrever esse texto, utilizei como referência o site PHP-Learn-it.com, o W3Schools e o manual do PHP.

    Espero que em algum momento essa referência sirva a você!

    Só não esquecendo de dizer que para deletar arquivos, utilizamos a função unlink().
    Agradeçimentos :
    Lucasxd111

    http://forum-dix.com.br

    #2
    Fuera de línea
    ✖ Meck
    Dom Set 16, 2012 11:25 am


    ✖ Meck

    Expert II


     Expert II
    Muito bom !

    Um pouco difícil Rs' .
    Obrigado por compartilhar

    http://ezoo.cycloneteambrasil.com.br

    #3
    Fuera de línea
    Shek
    Qua Set 26, 2012 8:28 pm


    Shek

    Suporte

    Suporte
    Olá caro amigo , belo tópico resolvera as duvidas dos membros acessantes do fórum .

    #4
    Fuera de línea
    Conteúdo patrocinado





    Mensagem [Página 1 de 1]