Php 从目录中读取文本文件
我是html和php的初学者。我试图创建一个脚本,它将打开目录,显示所有文本文件,打开每个文本文件进行编辑,并将更改保存到一个文件中(所有脚本操作都将传输到html表单)。不幸的是,在打开目录并查看文件后,我无法读取它们的内容。有人能告诉我我做错了什么吗? 谢谢你的帮助Php 从目录中读取文本文件,php,html,Php,Html,我是html和php的初学者。我试图创建一个脚本,它将打开目录,显示所有文本文件,打开每个文本文件进行编辑,并将更改保存到一个文件中(所有脚本操作都将传输到html表单)。不幸的是,在打开目录并查看文件后,我无法读取它们的内容。有人能告诉我我做错了什么吗? 谢谢你的帮助 <?php $path = "books/"; $books = opendir($path); while (($book
<?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
(尽管有较短的方法可以完成此操作)。顺便问一下,为什么在那里有两个嵌套循环?这应该是从书籍
中包含的多个文件夹中读取,还是确切地说?请不要在注释中添加扩展的代码片段,这很难阅读。编辑你的问题,并在那里插入正确格式的代码。太好了,它起作用了。非常感谢你。我只需要分离文件的内容,这样它就不会显示在一个字符串中,但我想我已经能够处理它了。