Estou tentando ler cada linha de um arquivo de texto em uma matriz e ter cada linha em um novo elemento.
Meu código até agora.
<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {
$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);
?>
php
arrays
text-files
fgets
Dan
fonte
fonte
'\n\'
não será explodido, mas deve ser um"\n"
para que seja analisado como uma sequência de escape.Respostas:
Se você não precisa de nenhum processamento especial, isso deve fazer o que você procura
fonte
file()
parece ser consideravelmente mais lento do quefile_get_contents
+explode
para arrayA maneira mais rápida que encontrei é:
onde $ filename vai ser o caminho e nome do seu arquivo, por exemplo. ../filename.txt.
Dependendo de como você configurou seu arquivo de texto, talvez seja necessário brincar com a parte \ n.
fonte
Basta usar isto:
fonte
FILE_IGNORE_NEW_LINES
evite adicionar uma nova linha no final de cada elemento da matrizVocê também pode usar
FILE_SKIP_EMPTY_LINES
para Pular as linhas vaziasreferência aqui
fonte
fonte
Obviamente, você precisará primeiro criar um identificador de arquivo e armazená-lo
$file
.fonte
É tão fácil assim:
file_get_contents()
- obtém o arquivo inteiro como string.explode("\n")
- dividirá a string com o delimitador"\n"
- o que é escape ASCII-LF para uma nova linha.Mas preste atenção - verifique se o arquivo tem terminações UNIX -Line.
se
"\n"
não funcionar corretamente, você tem outra codificação de 2 novas linhas e pode tentar"\r\n"
,"\r"
ou"\025"
fonte
fonte
Você estava no caminho certo, mas houve alguns problemas com o código postado. Em primeiro lugar, não havia colchete de fechamento para o loop while. Em segundo lugar, $ line_of_text seria sobrescrito com cada iteração do loop, o que é corrigido alterando = para a. = No loop. Terceiro, você está explodindo os caracteres literais '\ n' e não uma nova linha real; no PHP, as aspas simples denotam caracteres literais, mas as aspas duplas na verdade interpretam variáveis e caracteres de escape.
fonte
Isso aceitará o arquivo txt como array. Então escreva qualquer coisa no arquivo links.txt (use uma linha para um elemento) depois, execute esta página :) seu array será $ file
fonte
Isso foi coberto aqui muito bem, mas se você REALMENTE precisar de um desempenho ainda melhor do que qualquer coisa listada aqui, você pode usar esta abordagem que usa
strtok
.Observe, isso assume que seu arquivo é salvo com
\n
o caractere de nova linha (você pode atualizá-lo conforme necessário), e também armazena as palavras / nomes / linhas como as chaves de array em vez dos valores, para que você possa usá-lo como um tabela de pesquisa, permitindo o uso deisset
(muito, muito mais rápido), em vez dein_array
.fonte