我很努力地创建一个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