将每行txt文件读取到新的数组元素

时间:2011-05-28 04:40:52

标签: php arrays text-files fgets

我正在尝试将文本文件的每一行读入一个数组,并将每一行放在一个新元素中 我的代码到目前为止。

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

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

?>

11 个答案:

答案 0 :(得分:375)

如果您不需要任何特殊处理,this应该做您正在寻找的事情

$lines = file($filename, FILE_IGNORE_NEW_LINES);

答案 1 :(得分:33)

我发现的最快方式是:

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

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

其中$ filename将成为路径&amp;您的文件名称,例如。 ../ FILENAME.TXT。

根据您设置文本文件的方式,您可能需要使用\ n位。

答案 2 :(得分:24)

请使用:

$array = explode("\n", file_get_contents('file.txt'));

答案 3 :(得分:21)

<?php
$file = fopen("members.txt", "r");
$members = array();

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

fclose($file);

var_dump($members);
?>

答案 4 :(得分:20)

$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINES避免在每个数组元素的末尾添加换行符 您也可以使用FILE_SKIP_EMPTY_LINES来跳过空行

参考here

答案 5 :(得分:7)

这很容易:

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

file_get_contents() - 将整个文件作为字符串。

explode("\n") - 将使用分隔符"\n"拆分字符串 - 换行符的ASCII-LF转义。

但要注意 - 检查文件是否有 UNIX -Line结尾。

如果"\n"无法正常工作,您还可以使用其他编码2换行,您可以尝试"\r\n""\r""\025"

答案 6 :(得分:6)

$lines = array();
while (($line = fgets($file)) !== false)
    array_push($lines, $line);

显然,您需要先创建一个文件句柄并将其存储在$file中。

答案 7 :(得分:2)

$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);

答案 8 :(得分:1)

您走在正确的轨道上,但您发布的代码存在一些问题。首先,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);
    ?>

答案 9 :(得分:1)

    $file = file("links.txt");
print_r($file);

这将接受txt文件作为数组。所以写任何东西到links.txt文件(使用一行代表一个元素)之后,运行这个页面:)你的数组将是$ file

答案 10 :(得分:0)

这里已经很好地介绍了这一点,但是如果您真的需要比此处列出的任何内容更好的性能,您可以使用这种使用strtok的方法。

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

注意,这假设您的文件以\n作为换行符保存(您可以根据需要更新),并且它还将单词/名称/行存储为数组键而不是值,这样您就可以将其用作查找表,允许使用isset(更快,更快),而不是in_array