it-swarm.com.ru

Прочитать каждую строку TXT-файла в новый элемент массива

Я пытаюсь прочитать каждую строку текстового файла в массив и каждая строка в новом элементе.
Мой код пока.

<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {

$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);

?>
93
Dan

Если вам не нужна особая обработка, это должно делать то, что вы ищете

$lines = file($filename, FILE_IGNORE_NEW_LINES);
371
Yanick Rochon

Самый быстрый способ, который я нашел, это: 

// Open the file
$fp = @fopen($filename, 'r'); 

// Add each line to an array
if ($fp) {
   $array = explode("\n", fread($fp, filesize($filename)));
}

где $ filename будет путь и имя вашего файла, например. ../filename.txt.

В зависимости от того, как вы настроили текстовый файл, вам, возможно, придется поиграться с битом\n.

33
Drew Dello Stritto

Просто используйте это:

$array = explode("\n", file_get_contents('file.txt'));
24
RoLife
<?php
$file = fopen("members.txt", "r");
$members = array();

while (!feof($file)) {
   $members[] = fgets($file);
}

fclose($file);

var_dump($members);
?>
21
Gaurav
$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINES избегать добавления новой строки в конце каждого элемента массива 
Вы также можете использовать FILE_SKIP_EMPTY_LINES, чтобы пропустить пустые строки

ссылка здесь

17
iianfumenchu

Это просто так:

$lines = explode("\n", file_get_contents('foo.txt'));

file_get_contents() - получает весь файл в виде строки.

explode("\n") - разделит строку с разделителем "\n" - что означает экранирование ASCII-LF для новой строки.

Но обратите внимание - убедитесь, что в файле естьUNIX- Концы строк. 

если "\n" не будет работать должным образом, у вас есть другая кодировка 2 новой строки, и вы можете попробовать "\r\n", "\r" или "\025"

7
CodeBrauer
$lines = array();
while (($line = fgets($file)) !== false)
    array_Push($lines, $line);

Очевидно, вам нужно сначала создать дескриптор файла и сохранить его в $file.

6
Rafe Kettler
$file = __DIR__."/file1.txt";
$f = fopen($file, "r");
$array1 = array();

while ( $line = fgets($f, 1000) )
{
    $nl = mb_strtolower($line,'UTF-8');
    $array1[] = $nl;
}

print_r($array);
2
Attila Nagy
    $file = file("links.txt");
print_r($file);

Это будет принимать текстовый файл как массив. Поэтому запишите что-нибудь в файл links.txt (используйте одну строку для одного элемента) после того, как запустите эту страницу :) ваш массив будет $ file

1
altayevrim

Вы были на правильном пути, но были некоторые проблемы с кодом, который вы разместили. Прежде всего, не было закрывающей скобки для цикла while. Во-вторых, $ line_of_text будет перезаписываться при каждой итерации цикла, что фиксируется изменением = на. = В цикле. В-третьих, вы взрываете буквальные символы '\ n', а не фактическую новую строку; в PHP одинарные кавычки обозначают буквальные символы, а двойные кавычки фактически интерпретируют экранированные символы и переменные.

    <?php
        $file = fopen("members.txt", "r");
        $i = 0;
        while (!feof($file)) {
            $line_of_text .= fgets($file);
        }
        $members = explode("\n", $line_of_text);
        fclose($file);
        print_r($members);
    ?>
0
Nick Andren

Это было достаточно хорошо описано здесь, но если вамДЕЙСТВИТЕЛЬНОнужна даже лучшая производительность, чем что-либо из перечисленного здесь, вы можете использовать этот подход, использующий strtok.

$Names_Keys = [];
$Name = strtok(file_get_contents($file), "\n");
while ($Name !== false) {
    $Names_Keys[$Name] = 0;
    $Name = strtok("\n");
}

Обратите внимание, что предполагается, что ваш файл сохраняется с \n в качестве символа новой строки (вы можете обновить его по мере необходимости), а также сохраняет слова/имена/строки в качестве ключей массива вместо значений, чтобы вы могли использовать его как таблица поиска, позволяющая использовать isset (намного, намного быстрее) вместо in_array.

0
Brian Leishman