我试图将文本文件的每一行读入一个数组,并将每一行放入一个新元素中。 目前为止是我的代码。
<?php $file = fopen("members.txt", "r"); while (!feof($file)) { $line_of_text = fgets($file); $members = explode('\n', $line_of_text); fclose($file); ?>
<?php $file = fopen("members.txt", "r"); $members = array(); while (!feof($file)) { $members[] = fgets($file); } fclose($file); var_dump($members); ?>
$lines = array(); while (($line = fgets($file)) !== false) array_push($lines, $line);
显然,您需要首先创建一个文件句柄并将其存储在 $file中。
$file
如果你不需要任何特殊的处理,这个应该做你想要的
$lines = file($filename, FILE_IGNORE_NEW_LINES);
你的方向是对的,但是你发布的代码有些问题。首先,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); ?>
我找到的最快的方法是:
// 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 位。
用这个:
$array = explode("\n", file_get_contents('file.txt'));
$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);
就这么简单:
$lines = explode("\n", file_get_contents('foo.txt'));
file_get_contents()-以字符串形式获取整个文件。
file_get_contents()
explode("\n")-将分割字符串与分隔符 "\n"-什么是 ASCII-LF 转义换行符。
explode("\n")
"\n"
但请注意-检查文件有 UNIX行结束。
如果 "\n"将不能正常工作,你有另一个换行编码,你可以尝试 "\r\n","\r"或 "\025"
"\r\n"
"\r"
"\025"
$file = file("links.txt"); print_r($file);
这将接受 txt 文件作为数组。所以写任何东西到 links.txt 文件(一行代表一个元素)之后,运行这个页面:)你的数组将是 $file
$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);
FILE_IGNORE_NEW_LINES避免在每个数组元素的末尾添加换行符 也可以使用 FILE_SKIP_EMPTY_LINES跳过空行
FILE_IGNORE_NEW_LINES
FILE_SKIP_EMPTY_LINES
参考 给你
这里已经很好地讨论了这个问题,但是如果 真的需要比这里列出的任何内容更好的性能,那么可以使用这种使用 strtok的方法。
strtok
$Names_Keys = []; $Name = strtok(file_get_contents($file), "\n"); while ($Name !== false) { $Names_Keys[$Name] = 0; $Name = strtok("\n"); }
注意,这里假设您的文件以新行字符 \n的形式保存(您可以根据需要进行更新) ,并且它还将单词/名称/行作为数组键而不是值存储,这样您就可以将其用作查找表,从而允许使用 isset(快得多得多)而不是 in_array。
\n
isset
in_array