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 $filename
em um array :
file ( string $filename , int $flags = 0 , resource $context = ? ) : array
Linguagem 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_LINES
sinalizador.
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.txt
arquivo php.net
em 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 5
Linguagem 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.