2013-10-21 58 views
1

我想將用戶對我的網站的評論存儲在一個txt文件中。 所以..我想知道如何使用PHP編輯txt文件內容。如何使用php編輯txt文件內容?

我的txt文件內容是這樣的...

uid=5 
comment="Hello world" 
time="2013:11:21:xx:xx" 

uid=6 
comment="Test comment" 
time="2013:11:21:xx:xx" 

so..if我想編輯的uid = 5的評論,我怎麼可以用PHP做。 或者告訴我一個更好的方法,內容應該放在文本文件中以使這個任務變得簡單。

我不喜歡使用databse來存儲我的意見。 請有人幫我解決這個問題。 Thansk

+1

你最好使用數據庫。你將嘗試實現你的「時間之鯨」。採取主動和使用數據庫,我做了,這是我做過的最好的決定。你會通過**編輯HELL **編碼,直到「奶牛回家」。 –

+1

更好的方法是使用數據庫......您可以使用數據庫節省大量的文本解析。在最壞的情況下,你可能會使用存儲在文本文件中的JSON對象,但即使這樣你也會頭疼。 – Snowburnt

+0

您應該使用CSV文件來實現此功能 –

回答

2
$txt_file = file_get_contents('path/to/file'); 
$rows = explode("\n", $txt_file); //you get all rows here 
foreach ($rows as $row => &$data) { 
    if (strstr($data, 'uid=5') !== FALSE) { 
     //it means the following line contains your comment, 
     //work with it as string 
     $rows[$row + 1] = "comment=" . $newComment; 
    } 
    $data = $data . "\n"; 
} 
file_put_contents('path/to/file', $rows); 
+0

*「所以如果我想編輯** uid = 5的評論」* –

+0

Thansk你,這很簡單,工作。我打算在網站上發佈允許用戶發表帖子和評論的網站。那裏我要添加數據庫中的帖子和存儲在txt文件中的評論,並且我在表格行中放置了與帖子相關的txt文件的鏈接。 我這樣做我倒了,這將MySQL數據庫的速度足以在行的thousends內服務窗體?你認爲這是一個好主意嗎? – Milan

+0

我不太明白這個問題,但MySQL數據庫可以很快處理數百萬行。如果你剛剛開始你的網站,我認爲你不應該擔心數據庫性能。當您的網站開始增長時,您可以開始考慮性能。 –

0

如果您沒有可用的數據庫服務器,我建議您使用SQLite。它像真正的數據庫服務器一樣工作,但它將數據存儲在磁盤上的文件中。通過使用一個普通的文本文件,遲早你會遇到麻煩。

1

json提供了一種將數組序列化爲字符串的簡單方法。
使用json_decodejson_encode你可以將上面的例子轉換成每行有一個json記錄。

然後使用上面的答案一次讀取一行,並尋找你想要的uid。只需對該行進行json_decode即可獲得整個數組以供評論。

此方法允許您稍後更改註釋中屬性的數量和/或使某些屬性爲可選,而不會使文件解析變得複雜,或者依靠雙空白鏈接或空白技巧來分隔記錄。

文件示例

{ 'uid':'5','comment'='Hello world','time'='2013:11:21:xx:xx' }\r\n 
{ 'uid':'6','comment'='Hello world','time'='2013:11:21:xx:xx' }\r\n 
0

我同意Bhavik沙阿,如果你不能使用一個數據庫,然後一個CSV會更容易的工作。不過,假設你不能做下面的任何一種解決方案,但不是最優雅的解決方案,而是一種解決方案。

$file = 'myfile.txt'; 
$fileArray = file($file); 
$reachedUser = false; 
for($i=0; $i<=count($fileArray); $i++){ 
    if(preg_match('/uid=6/', $fileArray[$i]) == 1){ 
     $reachedUser = true; 
     continue; 
    } 
    if($reachedUser && preg_match('/comment=/', $fileArray[$i])){ 
     $fileArray[$i] = "comment=\"This is the users new comment\"\n"; 
     break; 
    } 
} 
reset($fileArray); 

$fh = fopen($file, "w"); 
foreach($fileArray as $line){ 
    fwrite($fh, $line); 
} 
+0

morgunder的解決方案要容易得多。將您的文本文檔轉換爲json文檔。然後用json_decode來玩它。 –