php - 选择要编辑的文件

标签 php text-files fopen fwrite readdir

我有一个用于编辑 .txt 文件的应用程序。该应用程序由 3 部分组成

  1. 显示包含要编辑的文件的文件夹内容(每个文件都是一个链接,单击后会在编辑模式下打开)。

  2. 写入文件。

  3. 保存到文件。

我已经使用 fopen 和 fwrite 函数完成了第 2 部分和第 3 部分,这并不难。我需要帮助的部分是第一部分,目前我通过输入文件的位置和文件名来打开文件,就像在具有显示功能和保存功能的 php 文件中一样:

$relPath = 'file_to_edit.txt';
$fileHandle = fopen($relPath, 'r') or die("Failed to open file $relPath ! ");

但我想要的是单击时以编辑模式打开文件,而不是每次都输入文件名。

$directory = 'folder_name';

if ($handle = opendir($directory. '/')){
    echo 'Lookong inside \''.$directory.'\'<br><br>';

        while ($file = readdir($handle)) {
        if($file !='.' && $file!='..'){
        echo '<a href="'.$directory.'/'.$file.'">'.$file.'<a><br>';

    }

    }

}

这是我用来显示指定文件夹中的文件列表的代码。 任何人都可以给我一些指示,我如何才能实现这一目标?任何帮助将不胜感激。

最佳答案

  1. 要获取文件内容,请使用 file_get_contents();
  2. 要放置文件内容,请使用 file_put_contents();带有用于编辑的FILE_APPEND标志。
  3. 要接收目录中的文件列表,您可以使用 DirectoryIterator

示例:

foreach (new DirectoryIterator('PATH/') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}

如果你不想输入文件名,你可以在将读取的文件放入数据库后为其分配 id,并使用带有 id 参数的链接。另一种解决方案是将文件存储在 session 数组中并为其分配键。当您想获取文件时,您只需要提供 key 而不是整个文件名和路径。

$_SESSION示例

$file_arr = array();
foreach (new DirectoryIterator('PATH/') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    $file_arr[] = array("path" => $fileInfo->getPathname(), 'name' => $fileInfo->getFilename());
}
$_SESSION['files'] = $file_arr;

然后在 View 中您可以使用

foreach($_SESSION['files'] as $k=>$file)
{
  echo "<a href='edit.php?f=".$k."'>'.$file['name'].'</a>";
}

edit.php

$file = (int)$_GET['f'];

if(array_key_exits($file, $_SESSION['files'])
{
   $fileInfo = $_SESSION[$file'];

   //in file info you have now $fileInfo['path'] $fileInfo['name']
}

关于php - 选择要编辑的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663767/

相关文章:

c++ - 编辑文本文件

php - 在 PHP 中返回空字符串

php - 使用 where 子句和 if 语句进行 MySQL 查询

performance - PHP 处理速度 apache 2.4 mpm-prefork mod_php 5.4 与 nginx 1.2.x PHP-FPM 5.4

c++ - 错误不完整的通用字符名称\U

regex - 使用 perl 增加文本文件中的数字

php - fwrite() 超过 2 GiB?

c++ - 我如何在 C++ 中找到哪个子类正在调用父类的函数?

C 文件检查文件是否为空或包含 ASCII 文本

php - 我可以在不关闭并重新打开连接的情况下向 clamd 套接字(ClamAV 守护程序)发送多个命令吗?