Двойка по умолчанию неплохо справляется с данной задачей, но хотелось бы лучше. Текст режется по заданному количеству символов, в конце предложения получаются в виде обрубков.
Из приведенных текстуальных фрагментов видно, как матрица абсурдно просветляет диалогический контекст, где автор является полновла
Немного улучшило ситуацию решение, найденное на страницах данного форума:
<?php if( mb_strlen($item[$teaser_field], 'UTF-8') > 130 ){ $item[$teaser_field] = mb_substr($item[$teaser_field], 0, 130, 'UTF-8') . '...'; } echo ($item[$teaser_field]);?>
В конце подставляются точки, что в некоторой степени делает обрубленные предложения более логично завершенными, но слова остаются обрубленными, и это не есть гуд.
Из приведенных текстуальных фрагментов видно, как матрица абсурдно просветляет диалогический контекст, где автор является полновла...
В своих закладках нашел решение от одного очень уважаемого мной человека, блог которого канул в лету, но листок с кодом у меня остался. Функция позволяет обрезать текст, оставляя слова целыми.
Кто разбирается в php, помогите прикрутить.
Вот код по умолчанию:
<div class="teaser">
<?php if (!$is_private) { ?>
<?php echo string_short($item[$teaser_field], $teaser_len); ?>
<?php } else { ?>
<!--noindex--><div class="private_field_hint"><?php echo LANG_PRIVACY_PRIVATE_HINT; ?></div><!--/noindex-->
<?php } ?>
</div>
Это с найденным на форуме решением, подставляет многоточие:
<div class="teaser">
<?php if (!$is_private) { ?>
<?php if( mb_strlen($item[$teaser_field], 'UTF-8') > 130 ){ $item[$teaser_field] = mb_substr($item[$teaser_field], 0, 130, 'UTF-8') . '...'; } echo ($item[$teaser_field]);?> <?php } else { ?>
<!--noindex--><div class="private_field_hint"><?php echo LANG_PRIVACY_PRIVATE_HINT; ?></div><!--/noindex-->
<?php } ?>
</div>
Вот решение, оставляющее слова целыми, его бы прикрутить:
Функция принимает 2 параметра. Первый параметр строка которую нужно обработать, 2-й это максимальное количество символов которое должно быть после обработки строки.
function substring($str,$count=110){
$substr=substr($str,0,$count-1); }else{
return $str;
}
}
алгоритм работы функции:
убираем теги html
Если длина строки меньше чем максимальное к-ко необходимых символов, обрезать ничего не надо просто выводим строку.
строка 4 возвращает под строку с начала и до n-го символа. n- максимальная длина строки. Но эта функция “режит” слова.
строка 5 немного запутанна потому ее алгоритм отдельно.
узнаем количество символов от конца до пробела.
получаем разницу длины “грубо” обрезанной строки и количество символов от конца до пробела.
предыдущим пунктом мы получили номер нужного нам символа(последнего). Теперь возвращаем под строку с начала до “нужного символа” .
возвращаем результат
как использовать функцию ?
$str='
— Сим удостоверяю, что предъявитель сего Николай Иванович провел упомянутою ночь на балу у сатаны, будучи привлечен туда в качестве перевозочного средства… поставь, Гелла, скобку! В скобке пиши "боров". Подпись — Бегемот.
— А число? — пискнул Николай Иванович.
— чисел не ставим, с числом бумага станет недействительной, — отозвался кот, подмахнул бумагу, откуда-то добыл печать, по всем правилам подышал на нее, оттиснул на бумаге слово "уплочено" и вручил бумагу Николаю Ивановичу.'
;
echo substring($str,200);