选择要编辑的文件

时间:2013-05-21 06:48:19

标签: php text-files fopen fwrite readdir

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

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

  2. 写入文件。

  3. 保存到文件。

  4. 第2部分和第3部分我已经完成了使用不太难的fopen和fwrite函数。我需要帮助的部分是第一部分,我现在通过在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 个答案:

答案 0 :(得分:3)

  1. 获取文件内容使用file_get_contents();
  2. 放置文件内容使用file_put_contents();使用 FILE_APPEND 标记进行编辑。
  3. 要接收目录中的文件列表,您可以使用DirectoryIterator
  4. 示例:

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

    如果您不想放置文件名,可以将读取文件放入db assign id中,并使用带有id param的链接。另一种解决方案是将文件存储在会话数组中并为它们分配密钥。当你想获得一个文件时,你只需要提供密钥而不是整个文件名和路径。

    $ _ 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;
    

    然后在视图中,您可以使用

    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']
    }