Php 选择要编辑的文件

Php 选择要编辑的文件,php,text-files,fopen,fwrite,readdir,Php,Text Files,Fopen,Fwrite,Readdir,我有一个用于编辑.txt文件的应用程序。该应用程序由3部分组成 显示包含要编辑的文件的文件夹的内容(单击每个文件时都是一个链接,在编辑模式下打开) 写入文件 保存到文件 第2部分和第3部分我已经完成了使用fopen和fwrite函数,这并不难。我需要帮助的部分是第一部分。目前,我通过在php文件中输入其位置和文件名来打开该文件,在该文件中,我有显示功能和保存功能: $relPath = 'file_to_edit.txt'; $fileHandle = fopen($relPath, 'r')

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

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

  • 写入文件

  • 保存到文件

  • 第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>';
    
        }
    
        }
    
    }
    
    $directory='folder_name';
    如果($handle=opendir($directory.'/')){
    回显'Lookong inside\'.$directory.'\'

    '; 而($file=readdir($handle)){ 如果($file!='.&&$file!='..')){ 回显'.$file.'
    '; } } }
    这是ti用于显示指定文件夹中文件列表的代码。 谁能给我一些建议,我如何才能做到这一点?任何帮助都将不胜感激

  • 要获取文件内容,请使用file_get_contents()
  • 要放置文件内容,请使用file_put_contents();使用文件\u附加标记进行编辑
  • 要接收目录中的文件列表,可以使用DirectoryIterator
  • 示例:

    foreach (new DirectoryIterator('PATH/') as $fileInfo) {
        if($fileInfo->isDot()) continue;
        echo $fileInfo->getFilename() . "<br>\n";
    }
    
    然后在视图中可以使用

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

    发布的第一个tnx:)我确实想过将所有文件放在数据库中。但由于我不会有很多这样的文件,数据库的使用看起来没有吸引力。有没有不涉及db的方法可以做到这一点?使用session仍然需要键入密钥的名称?我已经给出了session的示例,但db是更好的选项。我将尝试这两种选项以获得良好实践:)tnx获得详细答案。
    foreach($_SESSION['files'] as $k=>$file)
    {
      echo "<a href='edit.php?f=".$k."'>'.$file['name'].'</a>";
    }
    
    $file = (int)$_GET['f'];
    
    if(array_key_exits($file, $_SESSION['files'])
    {
       $fileInfo = $_SESSION[$file'];
    
       //in file info you have now $fileInfo['path'] $fileInfo['name']
    }