2011-01-12 54 views
1

我確實有一個文本文件,其中有大約400k的數據。其內容是這樣的..如何使用PHP編輯此文本文件?

1,james 
2,mathew 
3,yancy 
4,brandon 
5,molner 
6,nick 
7,neil...and so on 

如何從此文本文件中刪除數字和逗號,並保留唯一的名稱?

+0

爲什麼要使用php? –

+0

我熟悉這同樣多數民衆贊成爲什麼..甚至其他語言也會做...我熟悉Java腳本,PHP,VB等,但不是那些專家寫這些有點應用程序的 – mathew

+0

我有一個測試的例子作爲答案:) – Diablo

回答

2

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)); 

注 - 無錯誤檢查。如果一行缺少逗號,或者逗號是最後一個字符,則會出現混亂。

+0

此方法要求在寫入任何內容之前將整個文件讀入內存。逐行處理文件不是更好嗎,這樣一次只需要存儲一行文件? –

+0

哦是的,你是對的我想我可以做到一定水平會更新我的問題 – mathew

+0

@Alex豪威爾 - 如果文件是非常巨大的(幾MB或更多) - 是的。但只有40萬?這幾乎不會佔用任何RAM。線條很短。 10,000次讀/寫函數調用的開銷將淹沒其他所有內容。 –

0

400K是不是令人難以置信的多,所以你應該不用它(測試):

foreach (file($path) as $line) 
    print preg_replace("~^[0-9]+\,(.*)~", "$1", $line); 
+0

PS當然,您可以保存字符串而不是打印它。 –

0

這是測試,將返回它作爲一個清單,但可以將其保存到數據庫中,如果你想:

$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>'; 
0

這裏是一個Perl一個襯裏​​做的工作:

perl -i.save -pe 's/^\d+,//' test.txt 

原始文件將被保存在test.txt.save

+0

#cat input.txt | sed's/^ \ d,//'> test.txt#如果perl不在那裏:) –