我很努力地創建一個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. 將大文本文件(大約50GB)拆分爲多個文件
- 4. 如何將文本文件分割爲多個其他文本文件?
- 5. 如何將Scala腳本分割爲多個文件
- 6. 將文本文件分割成多個文件
- 7. 將文本文件分解爲多個文本文件
- 8. BASH shell腳本來一個大的XML文件分割成多個小文件
- 9. 想要將文本文件分割爲每行一個文件
- 10. 如何將文本文件逐位分割爲兩個文件
- 11. 將長輸入分割爲多個文本文件
- 12. 在UNIX中按列分割大文本文件爲多個小文件
- 13. Python將大文件分割爲多個文件
- 14. 如何將大文件分割爲多個文件?
- 15. 如何將大文本文件分割成更小的文件?
- 16. 將大型fasta文件拆分爲多個文件的biopython腳本
- 17. Python分割文本文件
- 18. 分割文本文件
- 19. 分割ASCII文本文件
- 20. Perl:合併多個文本文件和分割文件名
- 21. 將一個巨大的excel文件分割成多個文件
- 22. 使用php腳本以小塊分割大型壓縮文件
- 23. Perl將文本文件分割成塊
- 24. VB腳本將文本分成多個文件
- 25. 將一個大的文本文件劃分爲短文件
- 26. 分割文本文件數據爲列
- 27. 將多行文本文件分割成單個列表?
- 28. 豬:將大文件分割成多個小文件
- 29. 將文本文件分解爲多個文件中線
- 30. 將文本文件拆分爲多個文件C++
到目前爲止你有什麼?您當前的代碼呈現的確切問題是什麼?這聽起來有點像一個奇怪的問題,可能實際上是一個任務或考試問題。 – Treffynnon 2011-02-18 10:29:47