我很努力地創建一個PHP腳本,以幫助根據行數將大文本文件分割成多個較小的文件。我需要增加分割的選項,所以它從第一個文件中的10行開始,第二行中的20行開始,依此類推。PHP腳本將大文本文件分割爲多個文件
1
A
回答
4
這裏是我的腳本一個功能:
<?php
/**
*
* Split large files into smaller ones
* @param string $source Source file
* @param string $targetpath Target directory for saving files
* @param int $lines Number of lines to split
* @return void
*/
function split_file($source, $targetpath='./logs/', $lines=10){
$i=0;
$j=1;
$date = date("m-d-y");
$buffer='';
$handle = @fopen ($source, "r");
while (!feof ($handle)) {
$buffer .= @fgets($handle, 4096);
$i++;
if ($i >= $lines) {
$fname = $targetpath.".part_".$date.$j.".log";
if (!$fhandle = @fopen($fname, 'w')) {
echo "Cannot open file ($fname)";
exit;
}
if ([email protected]($fhandle, $buffer)) {
echo "Cannot write to file ($fname)";
exit;
}
fclose($fhandle);
$j++;
$buffer='';
$i=0;
$line+=10; // add 10 to $lines after each iteration. Modify this line as required
}
}
fclose ($handle);
}
?>
0
嗯。你不需要包含文件的最後部分? 我想更換 「如果($ I> = $線){」 用 「如果($ I> = $線|| FEOF($處理)){」
0
$handle = fopen('source/file/path','r');
$f = 1; //new file number
while(!feof($handle))
{
$newfile = fopen('new/file/path'.$f.'.txt','w'); //create new file to write to with file number
for($i = 1; $i <= 5000; $i++) //for 5000 lines
{
$import = fgets($handle);
//print_r($import);
fwrite($newfile,$import);
if(feof($handle))
{break;} //If file ends, break loop
}
fclose($newfile);
$f++; //Increment newfile number
}
fclose($handle);
3
它應該是一個評論,但我還不能評論。 AndyDeGroo的回答是錯誤的。它不會寫入文件的最後一行,或者在低於10行時不會保存文件。在while()循環寫入文件的其餘部分時,還應該保存文件。固定功能應如下所示:
<?php
/**
*
* Split large files into smaller ones
* @param string $source Source file
* @param string $targetpath Target directory for saving files
* @param int $lines Number of lines to split
* @return void
*/
function split_file($source, $targetpath='./logs/', $lines=10){
$i=0;
$j=1;
$date = date("m-d-y");
$buffer='';
$handle = @fopen ($source, "r");
while (!feof ($handle)) {
$buffer .= @fgets($handle, 4096);
$i++;
if ($i >= $lines) {
$fname = $targetpath.".part_".$date.$j.".log";
saveToFile($buffer, $fname);
$j++;
$i=0;
}
}
$fname = $targetpath.".part_".$date.$j.".log";
saveToFile($buffer, $fname);
fclose ($handle);
}
function saveToFile(&$buffer, $fname)
{
if (!$fhandle = @fopen($fname, 'w')) {
echo "Cannot open file ($fname)";
exit;
}
if ([email protected]($fhandle, $buffer)) {
echo "Cannot write to file ($fname)";
exit;
}
fclose($fhandle);
$buffer = '';
}
?>
PS。我刪除了「$ line」變量,因爲它沒有在任何地方使用。
相關問題
- 1. 如何將文本文件分割爲多個文本文件
- 2. 如何將文本文件分割爲多個其他文本文件?
- 3. 如何將Scala腳本分割爲多個文件
- 4. 將文本文件分割成多個文件
- 5. BASH shell腳本來一個大的XML文件分割成多個小文件
- 6. 將長輸入分割爲多個文本文件
- 7. 如何將大文件分割爲多個文件?
- 8. 將大型fasta文件拆分爲多個文件的biopython腳本
- 9. Python分割文本文件
- 10. 分割ASCII文本文件
- 11. 分割文本文件
- 12. 將一個巨大的excel文件分割成多個文件
- 13. Perl將文本文件分割成塊
- 14. VB腳本將文本分成多個文件
- 15. 將一個大的文本文件劃分爲短文件
- 16. 將文本文件拆分爲多個文件C++
- 17. 如何分割一個文件分成多個文本文件中的Unix
- 18. 使用PIG腳本將一個文件拆分爲多個文件
- 19. 用php腳本上傳多個文件
- 20. 與將文本數據分割爲多個文件相比,在一個大型ASCII文本文件中存儲文本數據有什麼缺點?
- 21. SH - 分割文件到多個文件
- 22. 如何使用MATLAB將每個空行上的大文本文件分割成更小的文本文件?
- 23. Python:將文本文件分類兩次並分割爲不同的文件?
- 24. 每5分鐘從php腳本創建一個文本文件
- 25. 將大文件讀取和分割爲多個小文件的最佳方法
- 26. 分割文本文件到兩個文件與非重疊項
- 27. Shell腳本 - 將xml拆分爲多個文件
- 28. 按最大行分割非常大的文本文件
- 29. 使用標題分割文本文件
- 30. 如何垂直分割文本文件
到目前爲止你有什麼?您當前的代碼呈現的確切問題是什麼?這聽起來有點像一個奇怪的問題,可能實際上是一個任務或考試問題。 – Treffynnon 2011-02-18 10:29:47