Próbuję odczytać każdy wiersz pliku tekstowego do tablicy i mieć każdy wiersz w nowym elemencie.
Jak dotąd mój kod.
<?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
źródło
źródło
'\n\'
nie zostanie on eksplodowany, podczas gdy musi być a,"\n"
aby został przeanalizowany jako sekwencja ucieczki.Odpowiedzi:
Jeśli nie potrzebujesz żadnego specjalnego przetwarzania, powinno to zrobić to, czego szukasz
źródło
file()
wydaje się być znacznie wolniejszy niżfile_get_contents
+explode
do tworzenia szykuNajszybszy sposób, jaki znalazłem, to:
gdzie $ filename będzie ścieżką i nazwą twojego pliku, np. ../filename.txt.
W zależności od tego, jak skonfigurowałeś plik tekstowy, być może będziesz musiał pobawić się \ n bitem.
źródło
Po prostu użyj tego:
źródło
FILE_IGNORE_NEW_LINES
unikaj dodawania nowej linii na końcu każdego elementu tablicyMożesz także użyć opcji
FILE_SKIP_EMPTY_LINES
Pomiń puste wierszeodniesienie tutaj
źródło
źródło
Oczywiście musisz najpierw utworzyć uchwyt pliku i zapisać go w
$file
.źródło
To takie proste:
file_get_contents()
- pobiera cały plik jako ciąg.explode("\n")
- podzieli ciąg za pomocą separatora"\n"
- czym jest znak ucieczki ASCII-LF dla nowej linii.Ale uważaj - sprawdź, czy plik ma system UNIX końcówki -Line.
jeśli
"\n"
nie będzie działać poprawnie, masz inne kodowanie 2 nowej linii i możesz spróbować"\r\n"
,"\r"
lub"\025"
źródło
źródło
Byłeś na dobrej drodze, ale wystąpiły problemy z opublikowanym kodem. Przede wszystkim nie było nawiasu zamykającego dla pętli while. Po drugie, $ line_of_text byłby nadpisywany przy każdej iteracji pętli, co jest naprawiane poprzez zmianę znaku = na a. = W pętli. Po trzecie, eksplodujesz dosłowne znaki „\ n”, a nie rzeczywistą nową linię; w PHP pojedyncze cudzysłowy będą oznaczać znaki dosłowne, ale podwójne cudzysłowy będą właściwie interpretować znaki ucieczki i zmienne.
źródło
Będzie to akceptować plik txt jako tablicę. Więc napisz cokolwiek do pliku links.txt (użyj jednej linii dla jednego elementu) po uruchomieniu tej strony :) twoja tablica będzie $ file
źródło
Zostało to tutaj omówione całkiem dobrze, ale jeśli NAPRAWDĘ potrzebujesz jeszcze lepszej wydajności niż cokolwiek wymienionego tutaj, możesz użyć tego podejścia, które wykorzystuje
strtok
.Zauważ, że zakłada to, że twój plik jest zapisywany
\n
jako znak nowego wiersza (możesz go zaktualizować w razie potrzeby), a także przechowuje słowa / nazwy / wiersze jako klucze tablicy zamiast wartości, dzięki czemu możesz go używać jako tablica przeglądowa, pozwalająca na użycieisset
(dużo, dużo szybciej) zamiastin_array
.źródło