2

.txt ファイルの編集に使用するアプリケーションがあります。アプリケーションは 3 つの部分で構成されています

  1. 編集するファイルを含むフォルダの内容を表示します (各ファイルは、クリックするとリンクになり、編集モードで開きます)。

  2. ファイルへの書き込み。

  3. ファイルに保存します。

パート 2 と 3 fopen 関数と fwrite 関数を使用して、それほど難しくなく完了しました。助けが必要な部分はパート1です。現在、表示機能と保存機能がある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>';

    }

    }

}

これは、指定したフォルダーにあるファイルの一覧を表示するために使用するコードです。これを達成する方法を誰か教えてもらえますか? どんな助けでも大歓迎です。

4

1 に答える 1

3
  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";
}

ファイル名を付けたくない場合は、読み取ったファイルを db に入れたら、それらに ID を割り当て、id パラメータでリンクを使用できます。もう 1 つの解決策は、ファイルをセッション配列に格納し、それらにキーを割り当てることです。ファイルを取得したい場合は、ファイル名とパス全体ではなくキーを指定するだけです。

$_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']
}
于 2013-05-21T06:50:44.520 に答える