作者kenshieh ( )
看板Web_Design
標題Re: [問題] PHP的讀txt檔問題
時間Sun Dec 5 16:23:47 2004
※ 引述《iamstudent (java)》之銘言:
: 我現在已經會讀取檔案,寫入檔案...
: 但是這些方法似乎都是單方向的
: 只能從檔案頭往檔案尾
: 如果我想要這樣動作
: 讀到特定的值
: 然後可以拉回來
: 修改這個位置的字再繼續往下
: 更正確的說
: 我有沒有辦法對一個txt檔的指定某一行作修改?
: 因為我不想用資料庫
: 如果可以做到這一點就可以省掉資料庫了
純文字檔要修改很麻煩。
一般有的做法是,
1. 讀出來到修改前位置放到 a.txt => 加入修改後的內容 => 讀剩下的內容 => 將 a.txt
改為新的檔案名稱。
2. 再來還可以用 fseek() 來做,但因為是文字檔,除非你格式固定,不然你抓不到你要
位移的長度。
所以一般人會把那些要修改的存成 binary 檔,但 php 不像 c 一樣有 struct ,所以
只能用 array 等方式來模擬。 有一個 serialize() 函式是在處理有關這方面的東西。
但如果真的只是文字檔,又要修改,不建議直接存成文字檔,除非你文字檔格式是固定的
或者你要使用上面說的第 1 種方法,不然在處理東西上,會麻煩很多。 但如果你的文字
檔量是很龐大的話,也不建議存成 binary 檔,因為這樣讀進來有點耗記憶體。 所以要
依照你的需求去變通了。
存成文字檔: 不管在新增/修改/刪除都蠻耗 IO 動作,但閱讀容易,也不用另外將二進位
轉成文字檔。
存成 binary 檔: 新增/修改/刪除 比較簡單,但對記憶體比較傷。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.199.112
※ 編輯: kenshieh 來自: 140.119.199.112 (12/05 16:28)
1F:推 iamstudent:謝謝 140.113.123.227 12/06