Php 从目录中读取文本文件

Php 从目录中读取文本文件,php,html,Php,Html,我是html和php的初学者。我试图创建一个脚本,它将打开目录,显示所有文本文件,打开每个文本文件进行编辑,并将更改保存到一个文件中(所有脚本操作都将传输到html表单)。不幸的是,在打开目录并查看文件后,我无法读取它们的内容。有人能告诉我我做错了什么吗? 谢谢你的帮助 <?php $path = "books/"; $books = opendir($path); while (($book

我是html和php的初学者。我试图创建一个脚本,它将打开目录,显示所有文本文件,打开每个文本文件进行编辑,并将更改保存到一个文件中(所有脚本操作都将传输到html表单)。不幸的是,在打开目录并查看文件后,我无法读取它们的内容。有人能告诉我我做错了什么吗? 谢谢你的帮助

<?php 

$path = "books/";
$books = opendir($path);                                     
while (($book = readdir($books)) !== false)                     
{
    echo $book;
    foreach (glob("*.txt") as $readfile)
    {
        $readFile = fopen($book, "r") or die("Permission error");
        echo fread($readFile, filesize($book));
        fclose($readFile);
    }
    
}
closedir();
?>

服务器响应: …Atlas_chmur.txtDiuna.txt

我使用了循环,因此只打开了.txt文件。目前我有:

<?php 

$path = "books/";
$books = opendir($path);                                     
while (($book = readdir($books)) !== false)                     
{
    echo $book;
    
    $readFile = fopen($book, "r") or die("Permission error");
    echo fread($readFile, filesize($book));
    fclose($readFile);   
    
}
closedir();
?>

现在我在尝试读取文件时出错。 服务器响应: . 警告:fopen(.):无法打开流:在第9行的C:\xampp\htdocs\BooksEditorForm\index.php中权限被拒绝权限错误

请尝试此代码

$path = "blog/";
$books = opendir($path);
while (($book = readdir($books)) !== false)
{
    if( substr($book, -4) === ".txt" )
    {
        $filePath = $path.$book;
        $readFile = fopen($filePath, "r") or die("Permission error");
        echo fread($readFile, filesize($filePath));
        fclose($readFile);
    }

}
closedir();
 $files = scandir('books/');
        if(count($files) > 0) {
            foreach ($files as $key => $value) {            
                echo '<pre>'; print_r($value); echo '</pre>';
                // to read files data
                $readFileVar = fopen ($value, "r");
                 while ($filedata = fgets($readFileVar)) { 
                     print_r($filedata);
                  }
            }
        }
让我解释一下

首先,在循环中需要循环的情况非常罕见,所以如果代码中有循环,请对其进行分析,因为问题很有可能以不同的方式得到更有效的解决

代码:$book的值是包含文件名的字符串,所以简单使用substr()函数检查最后4个字符就会告诉我们它是“*.txt”格式。 另一个改变的是文件路径$book包含它的名称,但您的脚本正在从它自己的角度查找文件,所以文件路径应该包含folder+filename


没有必要在最后关闭PHP标记,除非后面有其他非PHP的东西(如HTML)。

我使用了下面的代码。它运行良好。请尝试此代码

$path = "blog/";
$books = opendir($path);
while (($book = readdir($books)) !== false)
{
    if( substr($book, -4) === ".txt" )
    {
        $filePath = $path.$book;
        $readFile = fopen($filePath, "r") or die("Permission error");
        echo fread($readFile, filesize($filePath));
        fclose($readFile);
    }

}
closedir();
 $files = scandir('books/');
        if(count($files) > 0) {
            foreach ($files as $key => $value) {            
                echo '<pre>'; print_r($value); echo '</pre>';
                // to read files data
                $readFileVar = fopen ($value, "r");
                 while ($filedata = fgets($readFileVar)) { 
                     print_r($filedata);
                  }
            }
        }
$files=scandir('books/');
如果(计数($files)>0){
foreach($key=>$value形式的文件){
回显“”;打印($value);回显“”;
//读取文件和数据
$readFileVar=fopen($value,“r”);
而($filedata=fgets($readFileVar)){
打印(文件数据);
}
}
}

foreach(glob(“*.txt”)作为$readfile)为什么在这里使用
?尝试将该循环全部删除,因为它似乎可以找到文件,您只需要
fopen
(尽管有较短的方法可以完成此操作)。顺便问一下,为什么在那里有两个嵌套循环?这应该是从
书籍
中包含的多个文件夹中读取,还是确切地说?请不要在注释中添加扩展的代码片段,这很难阅读。编辑你的问题,并在那里插入正确格式的代码。太好了,它起作用了。非常感谢你。我只需要分离文件的内容,这样它就不会显示在一个字符串中,但我想我已经能够处理它了。