2012-01-22 35 views
0

我希望有人可以告訴我,如果我吠叫錯誤的樹認爲下面的代碼可能會稍微修改,以便不是打開一個文件,而是打開包含在第一個文件中的文件列表。使用fopen()從文件列表中讀取,而不是文件本身

這裏是我當前的代碼:

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

它工作正常,但讀取多個文件,我必須要麼貓所有小文件合併成一個龐大的一個,或者重複的96個小文件上面的文字我正在閱讀。

我想要的是包含在「atextfile.txt」文件中的文本文件列表。另一種方式可能是如果它可以讀取某個目錄或類似目錄中的所有「* .txt」文件。然後,通過在此列表中包含或刪除文件名,我將可以輕鬆地交換文件的順序和/或更改我包括的文件。

任何人有任何建議嗎?

+3

*「重複上述文字」* ...?!我希望你的意思是*循環*。 – 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到文件中?我需要一個長字符串。例如,如果它在一個文件中是「a」,而在下一個文件中是「bc」,那麼我需要最終的$ data變量爲「abc」,而沒有其他任何內容。出於某種原因,上面的代碼無聲無息......不知道爲什麼,但這可能是原因。 – user1149499