用php读取纯文本文件

时间:2010-11-05 03:03:36

标签: php

我的服务器中有一个包含此信息的文本文件:

Data1
Data2
Data3
.
.
.
DataN

如何使用PHP读取文本文件中的所有信息(逐行)?

12 个答案:

答案 0 :(得分:73)

<?php

$fh = fopen('filename.txt','r');
while ($line = fgets($fh)) {
  // <... Do your work with the line ...>
  // echo($line);
}
fclose($fh);
?>

这将为您提供逐行阅读..阅读php.net/fgets关于Mac的行结束问题的说明。

答案 1 :(得分:17)

http://php.net/manual/en/function.file-get-contents.php
http://php.net/manual/en/function.explode.php

$array = explode("\n", file_get_contents($filename));

这实际上不会逐行读取它,但它会为你提供一个可以逐行使用的数组。有很多选择。

答案 2 :(得分:16)

这个适合我

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

答案 3 :(得分:7)

您还可以使用file:

生成数组
$array = file('/path/to/text.txt');

答案 4 :(得分:7)

$filename = "fille.txt";
$fp = fopen($filename, "r");

$content = fread($fp, filesize($filename));
$lines = explode("\n", $content);
fclose($fp);
print_r($lines);

在此代码中,文件的完整内容被复制到变量$content,然后将其拆分为一个数组,文件中包含每个换行符。

答案 5 :(得分:4)

W3Schools是你的朋友:http://www.w3schools.com/php/func_filesystem_fgets.asp

在这里:http://php.net/manual/en/function.fopen.php有更多关于fopen的信息,包括模式是什么。

W3Schools说的是什么:

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

while(! feof($file))
  {
  echo fgets($file). "<br />";
  }

fclose($file);
?> 

fopen打开文件(在本例中为test.txt,模式为'r',表示只读,并将指针放在文件的开头)

while循环测试检查它是否在文件末尾(feof),而不是它调用fgets,它获取指针所在的当前行。

继续执行此操作,直到它结束文件,然后关闭文件。

答案 6 :(得分:2)

尝试这样的事情:

.button {
 // what you want to happen on hoverout
 animation: // your hoverout animation
}

.button:hover {
 // what you want to happen on hoverover
 animation: // your hoverover animation.
}

答案 7 :(得分:2)

$file="./doc.txt";
$doc=file_get_contents($file);

$line=explode("\n",$doc);
foreach($line as $newline){
    echo '<h3 style="color:#453288">'.$newline.'</h3><br>';

}

答案 8 :(得分:0)

  

您可以阅读一个文件夹中的一组txt文件,并像这样回显内容。

 <?php
$directory = "folder/";
$dir = opendir($directory);
$filenames = [];
while (($file = readdir($dir)) !== false) {
$filename = $directory . $file;
$type = filetype($filename);
if($type !== 'file') continue;
$filenames[] = $filename;
}
closedir($dir);
?>

答案 9 :(得分:0)

$aa = fopen('a.txt','r');
echo fread($aa,filesize('a.txt'));

$a = fopen('a.txt','r');
while(!feof($a)){echo fgets($a)."<br>";}
fclose($a);

答案 10 :(得分:0)

$ your_variable = file_get_contents(“ file_to_read.txt”);

答案 11 :(得分:0)

上面从 Payload 发布的代码效果很好。我想为此添加一些内容,因为其他人可能会遇到同样的问题。我使用了您的代码并试图将一个值与从 .txt 文件中提取的 $line 进行比较。即使我知道我的关键字匹配一行,我仍然收到错误消息。这是代码示例...

textfile.txt content example:

text1
text2
keyword
text3

$keyword = 'keyword';

while($line = fgets($txt_file)) {

    if (substr_compare($line, $keyword, 0) === 0) { 
        $value = $line;
    }
}

echo $value; // returns nothing because the if statement was false

问题是每个 $line 在它的末尾都有一个新行。但在我的情况下,我只是在创建 .txt 文件时使用 Enter 作为新行,它没有用“\n”或 idk“\r\n”之类的东西指定。无论如何,如果您遇到同样的问题,请确保在使用 $line 之前对其进行 trim() 以去除任何空格,或者在这种情况下是新行,否则您可能会继续遇到错误。在不得到奇怪结果的情况下执行此操作的最短和最简单的方法是在像这样的 while 语句中简单地修剪它......

while($line = trim(fgets($txt_file))) {
    
    if (substr_compare($line, $keyword, 0) === 0) { 
        $value = $line;
    }
} 

echo $value; // result: keyword

是的,我确实得到了一些奇怪的结果,试图在 substr_compare() 函数内的 $line 周围抛出 trim(),即使 if 语句的结果是 TRUE,$value 也会有一个带有空格的“关键字”结果在关键字的开头和结尾。奇怪的东西...