Можно ли взять очень длинную строку и разбить ее по предложению на 5000 элементов массива (или меньше)?
Вот что у меня получилось:
<?php
$text = 'VERY LONG STRING';
foreach(explode('. ', $text) as $chunk) {
$accepted[] = $chunk;
}
?>
Это просто разбивает строку на массив, содержащий элементы одного предложения. Мне нужно сгруппировать элементы в под-массивы, каждый из которых содержит список элементов, которые при объединении содержат не более 5000 символов.
Я пробовал это:
<?php
$text = 'VERY LONG STRING';
foreach(explode('. ', $text) as $chunk) {
$key = strlen(implode('. ', $accepted).'. '.$chunk) / 5000;
$accepted[$key][] = $chunk;
}
?>
Возможно, вы можете посмотрите, что я пытался сделать здесь, но это не сработало.
ОБНОВЛЕНИЕ: Это помогло:
<?php
foreach(explode('. ', $text) as $chunk) {
$chunkLen = strlen(implode('. ', $result).'. '.$chunk.'.');
if ($len + $chunkLen > 5000) {
$result[] = $partial;
$partial = [];
$len = 0;
}
$len += $chunkLen;
$partial[] = $chunk;
}
if($partial) $result[] = $partial;
?>
Спасибо всем, кто откликнулся, ваша поддержка очень много значит.