Função arquivo PHP()

Resumo : neste tutorial, você aprenderá como usar a file()função PHP para ler o arquivo inteiro em um array.

Introdução à função PHP file()

A file()função lê um arquivo inteiro especificado por a $filenameem um array :

file ( string $filename , int $flags = 0 , resource $context = ? ) : arrayLinguagem de código:  PHP  ( php )

A file()função possui três parâmetros:

  • $filenameé o caminho para o arquivo.
  • $flagsé um parâmetro opcional que pode ser uma ou mais das constantes abaixo.
  • $contexté um recurso de contexto de fluxo válido.

A tabela a seguir mostra os valores para $flags:

Bandeira Significado
FILE_USE_INCLUDE_PATH Procure o arquivo no caminho de inclusão.
FILE_IGNORE_NEW_LINES Ignore a nova linha no final do elemento da matriz.
FILE_SKIP_EMPTY_LINES Ignore as linhas vazias do arquivo.

A file()função retorna um array em que cada elemento corresponde a uma linha do arquivo. Se não quiser incluir o caractere de nova linha em cada elemento da matriz, você pode usar o FILE_IGNORE_NEW_LINESsinalizador.

Para pular linhas vazias, você pode usar a opção FILE_SKIP_EMPTY_LINES.

Observe que a file()função também funciona com um arquivo remoto usando o protocolo HTTP ou FTP.

Para ler o arquivo inteiro em uma string, você pode usar a file_get_contents()função.

Exemplo de função arquivo PHP()

O exemplo a seguir usa a file()função para ler o robots.txtarquivo php.netem um array e exibir seu conteúdo linha por linha:

<?php

$lines = file(
    'https://www.php.net/robots.txt',
    FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES
);


if ($lines) {
    foreach ($lines as $line) {
        echo htmlspecialchars($line) . PHP_EOL;
    }
}Linguagem de código:  HTML, XML  ( xml )

Se você executar o script atrás de um proxy, ele não funcionará e emitirá o seguinte erro:

Warning: file(http://www.php.net/robots.txt): failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respon in ...\file.php on line 5Linguagem de código:  texto simples  ( texto simples )

Para corrigir isso, você precisa criar um novo contexto de stream e definir o proxy assim:

<?php

$options = [
    'http'=>[
      'method'=>"GET",
      'header'=>"Accept-language: en\r\n",
      'proxy'=>"tcp://<proxy_ip>:<proxy_port>"
    ]
];

$context = stream_context_create($options);

$lines = file(
    'https://www.php.net/robots.txt',
    FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES,
    $context
);


if ($lines) {
    foreach ($lines as $line) {
        echo htmlspecialchars($line) . PHP_EOL;
    }
}Linguagem de código:  HTML, XML  ( xml )

Neste código, você precisa substituir <proxy_ip>e <proxy_port>pelo seu proxy atual.

Resumo

  • Use o PHP file()para ler o conteúdo de um arquivo local ou remoto em um array. Cada linha do arquivo será um elemento do array.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *