Снипет для оберзки текста

 
Данный снипет
  • обрезает текст до последнего пробела
  • очищает от тегов
  • Добавляет точки в конец если обрезка произошла
использовать можно двумя способами
[[!cutstr? &text=`[[*introtext]]` &q=`150` &tag=`1` &dot=1]]

или

[[*introtext:cutstr=`q=150&tag=1&dot=1`]]


<?php
/**
 * @name_snipet [[cutstr]]
 * режем текст до последнего пробела
 * $text - текст 
 * $q - количество символов 
 * $tag - очищать ли теги
 * $dot - добавлять ли точки в конец
 * [[!cutstr? &text=`[[*introtext]]` &q=`150` &tag=`1` &dot=1]]
 * [[*introtext:cutstr=`q=150&tag=1&dot=1`]]
*/
if (isset($options)) {
	foreach (explode('&', $options) as $O) {
		if (explode('=', $O)['0'] == 'tag') {
			$tag = explode('=', $O)['1'];
		}
		if (explode('=', $O)['0'] == 'q') {
			$q = explode('=', $O)['1'];
		}
		if (explode('=', $O)['0'] == 'dot') {
			$dot = explode('=', $O)['1'];
		}
	}
}

if (isset($input)) {
	$text = $input;
}
if (!isset($q)) {
	$q = 150;
}

if (!isset($dot)) {
	$dot = false;
}

if (!isset($tag)) {
	$tag = false;
}

if (!isset($tag)) {
	$tag = false;
}

if ($tag) {
	$out = strip_tags($text);
}
$out = substr($out, 0, $q);
$out = substr($out, 0, strrpos($out, ' ' ));

if ($dot && (strlen($text) > strlen($out))) {
	$out = $out.'...';
}
return $out;

Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.