0
我想在PHP中将一个巨大的字符串解析为较小的字符串。我有一个以\n
结尾的字符串。我想在第二个\n
之后得到这个句子,直到第五个\n
。如何获得字符串到第n次出现的字符在PHP中?
我设法做到了这一点,但由于我处理的字符串很大,因此需要大量的时间。这是我使用的方法:
$arrayBuffer = explode("\n", $buffer);
for($i = 0; $i < $NumOfRequests; $i++) {
$tmpBuffer = "";
for($j = $i * $NumOfAllowedRows; $j < ($i + 1) * $NumOfAllowedRows; $j++) {
// stop the loop if it reached the last cell of arrayBuffer, to avoid Index Out Of Bound Exception
if($j === $arrayBuffer[count($arrayBuffer)]){
break;
}
$tmpBuffer = $tmpBuffer . $arrayBuffer[$j] . "\n";
}
// do something with the tmpBuffer
}
目的是从第一个$缓冲区本身取一个子串而不创建另一个数组。
您应该使用生成器来循环blob,只产生你想要的行。与使用for循环相比,它们有很大的优势。 – Xorifelse
这似乎是一个很好的答案,但不幸的是我使用的是PHP 5.3。我不能升级它:(。 – MuhammadNe
没有使用生成器,你可以逐行读取你的字符串(或文件)使用流。 –