【问题标题】:Can I read a .TXT file with PHP?我可以用 PHP 读取 .TXT 文件吗?
【发布时间】:2012-03-25 16:02:13
【问题描述】:

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

一切正常!哇哦:-)

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

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

是的,我知道 stackoverflow 上有很多关于阅读 TXT 文件的问题,但是当我查看每个问题时,它们都是针对 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 文件。但那是以后的事了。

谢谢!

【问题讨论】:

  • 如果你只运行一次初始化脚本,你的数据应该在数据库中,就不需要再读取文件了,对吧?我还了解到您刚刚开始使用 PHP 进行编码,您应该考虑为这个伟大的资源添加书签:php.net/manual
  • "是的,我知道 stackoverflow 上有很多关于阅读 TXT 文件的问题,但是当我查看每个问题时,它们都是针对 C 或 C# 或 VB 或 Perl 的。我开始认为 PHP 只是无法读取文件 :-(" 如果在 StackOverflow 上没有提出问题,这也可能表明它非常微不足道并且可以在明显的位置找到,例如编程语言的手册。: -)
  • 但我不想在我的脚本中嵌入数据。我想要我的数据在一个文本文件中......请,请,在你给我一个流氓答案之前,请完整阅读我的问题!!!我有几本关于 PHP 的书,但都没有提到文件处理。他们都在谈论使用 PHP 进行 Web 开发,而没有提到文件处理。

标签: php file


【解决方案1】:

来自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);
}
?>

【讨论】:

  • 谢谢!这和我需要的很接近。但我更喜欢单独读取文件的每一行,这样我就可以用 substr 单独解析每一行。将整个文件放在一个大长字符串中会很痛苦。
  • @Fredashay 你可以用fgets 做到这一点,我已经更新了我的答案
  • 是的!这正是我想要的:-) 再次感谢!我希望我能给你一个评价,但我在这里只是一个苦工:-(
【解决方案2】:

我只需要一个简短的 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;
}

【讨论】:

    【解决方案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);
    ?>
    

    【讨论】:

    • 谢谢!这和我需要的很接近。但我更喜欢单独读取文件的每一行,这样我就可以用 substr 单独解析每一行。将整个文件放在一个大长字符串中会很痛苦。
    【解决方案4】:

    为什么你不阅读关于 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;
        }
    

    【讨论】:

    • php 可以读取文件,您需要做的就是使用fopen()fread(),这在 php.net 上有大量记录
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      您想逐行阅读吗?使用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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 2015-08-25
        • 2023-03-27
        • 2012-11-13
        • 1970-01-01
        • 2018-01-14
        相关资源
        最近更新 更多