use*_*est 3 php string text-processing
如何使用 PHP 按字符数将大文本文件拆分为单独的文件?因此,每 1000 个字符拆分的 10,000 个字符文件将拆分为 10 个文件。此外,我可以在找到句号后才拆分吗?
谢谢。
更新 1:我喜欢 zombats 代码,我删除了一些错误并提出了以下内容,但有没有人知道如何仅在句号后拆分?
$i = 1;
$fp = fopen("test.txt", "r");
while(! feof($fp)) {
$contents = fread($fp,1000);
file_put_contents('new_file_'.$i.'.txt', $contents);
$i++;
}
Run Code Online (Sandbox Code Playgroud)
更新 2:我接受了 zombats 的建议并将代码修改为下面的代码,它似乎有效-
$i = 1;
$fp = fopen("test.txt", "r");
while(! feof($fp)) {
$contents = fread($fp,20000);
$contents .= stream_get_line($fp,1000,".");
$contents .=".";
file_put_contents("Split/".$tname."/"."new_file_".$i.".txt", $contents);
$i++;
}
Run Code Online (Sandbox Code Playgroud)
您应该能够使用基本的fread()轻松完成此操作。您可以指定要读取的字节数,因此读取确切数量并将其输出到新文件很简单。
尝试这样的事情:
$i = 1;
$fp = fopen("test.txt",'r');
while(! feof($fp)) {
$contents = fread($fp,1000);
file_put_contents('new_file_'.$i.'.txt',$contents);
$i++;
}
Run Code Online (Sandbox Code Playgroud)
编辑
如果您希望在特定长度或某个字符后停止,则可以使用stream_get_line()而不是fread(). 它几乎相同,只是它允许您指定任何您希望的结束分隔符。请注意,它并没有返回的分隔符作为读取的一部分。
$contents = stream_get_line($fp,1000,".");
Run Code Online (Sandbox Code Playgroud)