在 PHP 中拆分文本文件

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)

zom*_*bat 5

您应该能够使用基本的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)