Возможен ли мягкий перенос предложений?

seosniks
На сайте с 13.08.2007
Offline
389
672

Добрый день.

Подскажите пожалуйста, если какая возможность чтоб переносить предложения на следующую строку.

пример.

$text="Каждая группа укомплектована мебелью, игрушками и учебными принадлежностями в зависимости от возраста детей. Просторный актовый зал полностью оснащен мультимедийным оборудованием для проведения детских праздников. Есть ибольшой бассейн для оздоровления ребят.";


//если обработать так. очень грубо.
echo $text= preg_replace("/[\.]/", ".<br />$1", $text);

то получим на выходе это.

Каждая группа укомплектована мебелью, игрушками и учебными принадлежностями в зависимости от возраста детей.

Просторный актовый зал полностью оснащен мультимедийным оборудованием для проведения детских праздников.
Есть ибольшой бассейн для оздоровления ребят.

но если точек будет несколько, или они будут к примеру в очень коротких предложениях.

это моё длинное предложение, и так далее.. бла. бла бла. бла бла. бла....

тогда получится   

далее..
бла.
бла бла.
бла бла.
бла....

как вариант нужно подсчитать слова, и разбивать их через к примеру каждые 150 символов, главное разрыв делать правильно.

Вот думаю как это сделать более просто.

gormarket
На сайте с 29.12.2010
Offline
47
#1

Попробуйте такой вариант:


$text= preg_replace("/([^.]{25,}\.) /", "$1<br />", $text);

перенос вставляется вместо пробела после точки, но при условии что перед точкой есть не менее 25 любых символов (исключая точку).

Число 25 взял "с потолка". Можете использовать свое значение.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
G
На сайте с 16.02.2011
Offline
42
#2

По-моему так:

$string = 'Каждая группа укомплектована мебелью, игрушками и учебными принадлежностями в зависимости от возраста детей. Просторный актовый зал полностью оснащен мультимедийным оборудованием для проведения детских праздников. Есть ибольшой бассейн для оздоровления ребят.';


$counter = 150;
$pos = 1;

while($pos){
$pos = strpos($string, ' ', $counter);
$string = substr($string, 0 ,$pos) . ' <br>' . substr($string, $pos + 1);
$counter = $counter + 150;
}

echo $string;
seosniks
На сайте с 13.08.2007
Offline
389
#3

Спасибо за помощь, завтра обязательно попробую Ваши варианты.

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