Как разбить текст на блоки в php без разрыва фраз и слов
Задача: разбить текст на блоки на определённое количество символов без разрыва фраз и слов, то есть без грубой "резки" текста
Способ решения, приведённый ниже будет разделять текст на блоки по ~1000 символов, используя разделитель точку.
$text = file_get_contents("text.txt"); //пишем содержимое тексового файла в строковую переменную
$at=explode(". ", $text); //разделим весь текст на предложения и пишем в массив
$count=count($at); //узнаём кол-во предложений в массиве
for ($i=0; $i<$count; $i++){
$tout.=$at[$i].". ";
if (strlen($tout)>=1000) { //тут предположительно будем делить по ~1000 знаков в блоке
$fout[]=$tout; //пишем набор предложений, кол-во знаков в которых равно или больше 1000 в массив
unset($tout);
}
// это нужно для записи последнего набора предложений, кол-во знаков в которых меньше 1000
elseif(strlen($tout)<=1000 && $i==$count-1){
$fout[]=$tout;
unset($tout);
}
}
// Тут собственно пример вывода
//все блоки хранятся в массиве $fout
//print_r($fout);
echo strlen($fout[0]);
echo "<br />";
echo $fout[0];
echo "<hr><br /><br />";
echo strlen($fout[1]);
echo "<br />";
echo $fout[1];
echo "<hr><br /><br />";
echo strlen($fout[2]);
echo "<br />";
echo $fout[2];
Вывод: данный скрипт успешно делит текст на блоки без разрыва предложений и слов. Минусом его является то, что кол-во символов в блоках иногда может довольно сильно отличатся от нужного нам размера (в данном случае 1000).
Комментарии:
Нету комментариев для вывода...