чем поделить текст

12 3
[Удален]
1359

подскажите чем поделить текстовку в знаках от - до рандомно? или по весу но что бы предложения не разрывались?

S
На сайте с 12.11.2009
Offline
25
shi
#1

Регэкспами :)

А вашего вопроса если честно не понял)

BredoGen.
На сайте с 19.10.2009
Offline
98
#2
shi:
А вашего вопроса если честно не понял)

Нужно делить по количеству байт, но чтобы предложения не разрывались. Я так понял:)

[Удален]
#3
BredoGen.:
Нужно делить по количеству байт, но чтобы предложения не разрывались. Я так понял:)

да так ...

BredoGen.
На сайте с 19.10.2009
Offline
98
#4

Ну тут несколько вариантов:

1. Брать n количество байт и в цикле while добавлять по одному байту (символу), пока предложение не закончиться.

2. Разбить текст на предложения и добавлять по очереди в файл, пока его размер не будет больше (или равен) заданного(му).

Первый вариант это извращение, процесс затянется на часы.

Остаётся второй вариант, есть другие предложения?:)

S
На сайте с 12.11.2009
Offline
25
shi
#5

Простой алгоритм:

1. Сплитаем текст по нужным разделителям предложения.

2. Аппендим предложения из полученного массива в нужную переменную пока ее длинна не станет выше заданного количества.

BredoGen.
На сайте с 19.10.2009
Offline
98
#6
shi:
Аппендим предложения из полученного массива в нужную переменную пока ее длинна не станет выше заданного количества.

Это я имел в виду под вариантом №2 :)

ciber
На сайте с 04.01.2008
Offline
215
#7

Реплейсим все .!? и е.т.с. на .<> !<> ?<>

Эхплойдим на предложения по <>

получаем массив предложений. Имплойдим необходимое колво предложений и сохраняем.

BredoGen.
На сайте с 19.10.2009
Offline
98
#8


<?php
$bait = 100; //Количество контента в байтах (~)
$content = file_get_contents('text.txt'); //Файл

$content = preg_replace('#([!\?\.]{1,})#', "$1<>", $content);

$text = explode('<>', $content);

$result = '';
$i = 0;

foreach($text as $string) {
$result .= $string;
if(strlen($result) >= $bait) {
$fp = fopen("$i.txt", 'w+');
fwrite($fp, $result);
fclose($fp);
$result = '';
$i++;
}

}
?>

Сделано по предложенному ciber'ом варианту :)

S
На сайте с 12.11.2009
Offline
25
shi
#9
BredoGen.:

Сделано по предложенному ciber'ом варианту :)

А если в тексте будет многоточие? :)

BredoGen.
На сайте с 19.10.2009
Offline
98
#10
shi:
А если в тексте будет многоточие?

И многоточие и несколько знаков подряд:


$content = preg_replace('#([!\?\.]{1,})#', "$1<>", $content); //Один или более символов
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий