1

我正在寻找一种非常有效的方法来拆分字符串并返回两个部分。

我需要拆分的字符串是 893,004 个字符长,字符串中的每一行是 163 个字符长,我想在 100 行之后拆分它。

使用正则表达式从文件中获取的字符串文件的快速表示,

'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters
'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters
'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters

等等等等,哈哈,

我尝试在 100 行后拆分字符串,

// FILE CONTENTS
$content = file_get_contents($file);
// GET PARSER GXDE
$split = preg_split('/^[a-z0-9\s]{16300}$/i', $content, 1); // REGEX DOESNT WORK
var_dump($split[0]);

我只是想在文件中的 100 行之后拆分字符串,这很容易做到吗?

4

2 回答 2

3

我只会使用file()将文件行作为数组获取或fgets()逐行提取文件。然后,这将允许您使用简单的计数器在适当的行数处中断文件。

于 2012-05-22T20:50:31.513 回答
0

如果你不需要,你真的不应该使用正则表达式。正则表达式是一项相对昂贵的操作,如果您使用正则表达式来获取固定长度的字符串,那只是浪费处理。

目前尚不清楚“在 100 行后拆分字符串”是什么意思。来自文档的这个改编示例将以 100 行块的形式写出文件(如果所有行都是 163 个字符,包括换行符)。

$handle = @fopen("/inputfile.txt", "r");
if ($handle) {
    $i = 0;
    while (($buffer = fgets($handle, 163000)) !== false) {
        $i++;
        file_put_contents("chunk$i.txt", $buffer);
    }
    fclose($handle);
}
于 2012-05-22T21:06:09.363 回答