我可以用PHP读取.TXT文件吗?

时间:2012-03-25 16:02:13

标签: php file

当我开始用PHP和MySQL编写我的网站时,我编写的第一个PHP脚本之一是初始化我的数据库的脚本。删除/创建数据库。删除/创建每个表。然后从脚本中的文字加载表。

这一切都很好! Whoohoo: - )

但我更愿意从文件中读取数据,而不是在PHP脚本中对它们进行硬编码。

我有几本关于PHP的书籍,但它们都是面向使用MySQL进行Web开发的。我找不到任何关于读写普通文件的内容。

是的,我知道有关读取TXT文件的stackoverflow存在大量问题,但是当我查看每个文件时,它们都是C或C#或VB或Perl。我开始认为PHP无法读取文件: - (

我需要的是一个简短的PHP示例,说明如何在服务器上打开TXT文件,按顺序读取,在屏幕上显示数据以及关闭文件,如下所示:

program readfile;
handle = open('myfile.txt');
data = read (handle);
while (not eof (handle)) begin
    display data;
    data = read (handle);
    end;
close (handle);
end;     

当我到达我的网站上人们上传头像的部分时,我还需要在服务器上写文件,并将它们保存为JPG或GIF文件。但那是为了以后的事。

谢谢!

6 个答案:

答案 0 :(得分:23)

来自PHP manual for fread()

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

修改 根据评论,您可以逐行阅读文件fgets()

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
?>

答案 1 :(得分:7)

  

我需要的是一个简短的PHP示例,说明如何在服务器上打开TXT文件,按顺序读取,在屏幕上显示数据以及关闭文件,如下所示:

echo file_get_contents('/path/to/file.txt');

是的,请参见file_get_contents,通常不需要循环:

$file = new SPLFileObject('/path/to/file.txt');
foreach($file as $line) {
    echo $line;
}

答案 2 :(得分:3)

好吧,既然你在询问关于这个主题的资源,那么 PHP.net docs 就会有一本书。

一个基本的例子:

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

答案 3 :(得分:2)

为什么你不阅读有关fopen

的php文档
 $file = fopen("source/file.txt","r");
  if(!file)
    {
      echo("ERROR:cant open file");
    }
    else
    {
      $buff = fread ($file,filesize("source/file.txt"));
      print $buff;
    }

答案 4 :(得分:1)

file_get_contents为你完成所有这些并以字符串形式返回文本文件:)

答案 5 :(得分:0)

你想逐行阅读?使用fgets

$handle = @fopen("myfile.txt", "r");
if ($handle) {
    while (($content = fgets($handle, 4096)) !== false) {
        //echo $content;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}