2012-01-22 4 views
0

次のコードが誤って変更される可能性があると考えるために間違ったツリーを鳴らしている場合は、 1つのファイルを開く代わりに、最初のファイルに含まれるファイルのリストを開きます。fopen()を使用してファイルのリストから読み込みます。ファイル自体ではなく

は、ここに私の現在のコードです:

$myFile = "atextfile.txt"; 
$v = fopen($myFile, 'r'); 
$data = fgets($v); 
fclose($v); 
$this->variable = html_entity_decode($data, ENT_NOQUOTES, 'UTF-8'); 

それは正常に動作しますが、私は猫のどちらかに持っている1巨大な一つにすべての小さなファイル、または他の96の小さなファイルのための上のテキストを繰り返して複数のファイルを読むために私は読もうとしている。

「atextfile.txt」ファイルに含まれるテキストファイルのリストを取得することをお勧めします。別の方法は、特定のディレクトリまたはそのようなものの中のすべての "* .txt"ファイルを読み取ることができる場合です。次に、このリストにファイル名を含めたり、削除したりすることで、ファイルの順序を入れ替えることができます。

誰もが何か提案がありますか?このような

+3

* * "の上のテキストを繰り返して" ...?!あなたが* loop *を意味することを願っています。 – deceze

答えて

1

何か:

$myFile = file('atextfile.txt'); 

foreach($myFile as $file) 
{ 
    if(file_exists($file)) 
    { 
    $data[] = file_get_contents($file); 
    } 
} 

print_r($data); 
0

、ディレクトリを読んで、すべてのファイルを開く、すべてのデータをキャプチャし、単一のタスクを実行します。 if文に関数を追加して、ファイル名を除外するなどの追加条件を追加できます。

$data = null; 
if ($handle = opendir('./path/to/files')) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != ".." && substr($entry,-4) == '.txt') { 
     $myFile = $entry; 
     $v = fopen($myFile, 'r'); 
     $data .= fgets($v); // concatenate 
     fclose($v); 
     } 
    } 
    closedir($handle); 
} 
// capture the big string 
$this->variable = html_entity_decode($data, ENT_NOQUOTES, 'UTF-8'); 
+0

これは私が目指しているようですが、fgets($ v)の部分はcrまたはlinefeedsをファイルに追加しますか?長い文字列が1つ必要です。たとえば、あるファイルで "a"、次のファイルで "bc"の場合は、最後の$データ変数を "abc"にする必要があります。何らかの理由で上記のコードが黙って失敗しています...理由は分かりませんが、それが原因かもしれません。 – user1149499

関連する問題