2012-02-09 2 views
2

次のコードは、ユーザ名のリストを画面に表示します。ただし、fid.txtファイルでは、最後の1つのユーザー名だけが保存されます。私はここで何が欠けていますか?リスト全体ではなくtxtファイルに最後のユーザ名だけを保存します

foreach ($twitter_xml->channel->item as $key) { 
$author = $key->guid; 

preg_match("#http://twitter.com/([^\/]+)/statuses/.*#", $author, $matches); 

print_r($matches[1]); 

file_put_contents('fid.txt', $matches[1]); 
} 
+0

FILE_APPENDフラグを設定する必要があります([here](http://php.net/manual/en/function.file-put-contents.php)を参照)。 –

答えて

1

file_put_contentsは、デフォルトでファイルを上書きします。追加モードを使用するように変更すると、おそらくあなたが期待することができます。

file_put_contents('fid.txt', "\n" . $matches[1], FILE_APPEND); // also added a newline to break things up 

はさらに良いことに、あなたは文字列に追加しなければならない、と一度だけファイルに書き込む:

$usernames = array(); 
foreach ($twitter_xml->channel->item as $key) { 
    // ... stuff ... 
    $usernames[] = $matches[1]; 
} 
// Save everything, separated by newlines 
file_put_contents('fid.txt', "\n" . implode("\n", $usernames), FILE_APPEND); 
3

あなたがFILE_APPENDフラグを使用していない限り、file_put_contents()は、オープンに書き込み、その都度新たにファイルを閉じます。

あなたは、デフォルトではfile_put_contents()file_put_contents('fid.txt', $matches[1], FILE_APPEND);

を使用する必要がfile_put_contents('fid.txt', $matches[1], FILE_APPEND);

2

を試してみては各呼び出しをファイルを上書きします。

2

file_put_contents('fid.txt', $matches[1], FILE_APPEND);

あなたは毎回全体のファイルを上書きしています。

関連する問題