我確實有一個文本文件,其中有大約400k的數據。其內容是這樣的..如何使用PHP編輯此文本文件?
1,james
2,mathew
3,yancy
4,brandon
5,molner
6,nick
7,neil...and so on
如何從此文本文件中刪除數字和逗號,並保留唯一的名稱?
我確實有一個文本文件,其中有大約400k的數據。其內容是這樣的..如何使用PHP編輯此文本文件?
1,james
2,mathew
3,yancy
4,brandon
5,molner
6,nick
7,neil...and so on
如何從此文本文件中刪除數字和逗號,並保留唯一的名稱?
Read該文件放入一個數組中,其中每個數組項是一行。 Walk通過陣列,find第一個逗號,和remove它和之前的一切。然後write它全部退出。
// Warning! Brain-compiled code ahead.
$arr = file('myfile.txt');
foreach ($arr as &$val)
$val = substr($val, strpos($val, ',') + 1);
file_put_contents('myoutfile.txt', implode(PHP_EOL, $arr));
注 - 無錯誤檢查。如果一行缺少逗號,或者逗號是最後一個字符,則會出現混亂。
此方法要求在寫入任何內容之前將整個文件讀入內存。逐行處理文件不是更好嗎,這樣一次只需要存儲一行文件? –
哦是的,你是對的我想我可以做到一定水平會更新我的問題 – mathew
@Alex豪威爾 - 如果文件是非常巨大的(幾MB或更多) - 是的。但只有40萬?這幾乎不會佔用任何RAM。線條很短。 10,000次讀/寫函數調用的開銷將淹沒其他所有內容。 –
400K是不是令人難以置信的多,所以你應該不用它(測試):
foreach (file($path) as $line)
print preg_replace("~^[0-9]+\,(.*)~", "$1", $line);
PS當然,您可以保存字符串而不是打印它。 –
這是測試,將返回它作爲一個清單,但可以將其保存到數據庫中,如果你想:
$file_path='my_file.txt';
$file_handler = fopen($file_path, 'rt');
$doc = fread($file_handler, filesize($file_path)+1);
$rows = explode("\n", $doc);
$rows_array = array();
foreach ($rows as $row) {
$data = explode(",", $row);
$return_array[] = $data[1];
}
//print_r($return_array);
//you can save it to a db
echo '<ul>';
foreach($return_array as $value){
echo '<li>'.$value.'</li>';
}
echo '</ul>';
這裏是一個Perl一個襯裏做的工作:
perl -i.save -pe 's/^\d+,//' test.txt
原始文件將被保存在test.txt.save
#cat input.txt | sed's/^ \ d,//'> test.txt#如果perl不在那裏:) –
爲什麼要使用php? –
我熟悉這同樣多數民衆贊成爲什麼..甚至其他語言也會做...我熟悉Java腳本,PHP,VB等,但不是那些專家寫這些有點應用程序的 – mathew
我有一個測試的例子作爲答案:) – Diablo