parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Корректная обрезка текста

skiv 21.02.2011 15:09 / 21.02.2011 17:50

Есть ли у кого-нибудь готовая функция которая из большого текста отрезает кусок заданной длины, но не рвет слова посередине, а нормально их обрабатывает, учитывает знаки препинания, ставит троеточие и пр.?

UPD: наваял вот, может пригодится кому...
@textCut[txt;len][around]
$result[$txt]
# вычитаем троеточие
$len($len - 3)
# если строка длиннее чем надо
^if($len > 5 && $len < ^txt.length[]){
#	режем
	$result[^txt.left($len)]
#	символы до и после разреза
	$around[^txt.mid($len - 1;2)]
#	если оба символа не пробелы, уменьшаем строку до первого пробела
	^if(^around.match[^^[^^ ]{2}^$]){
		$result[^result.match[\s[^^\s]+^$][]{}]
	}
#	убираем пробелы и некоторые знаки препинания в конце строки
	$result[^result.match[[\s\n,:^;–-]+^$][]{}]
#	ставим троеточие
	$result[^result.match[\.*^$][]{...}]
}