
Иногда приходится сталкиваться с тем что превью текста необходимо сделать из детального описания. для этого существует множество способов обрезки текста, но я решил написать свой универсальный
Чем же хорош именно эта функция? Она это делает красиво.
function substr_norm($str, $length)
{
if (strlen($str) > $length)
{
$symb[]['symbol'] = '!';
$symb[]['symbol'] = '.';
$symb[]['symbol'] = '?';
$str_new = substr($str, 0, $length);
$znak = false;
foreach ($symb as $key => $val)
{
$pos = strripos($str_new, $val['symbol']);
if ($pos !== false)
{
if ($znak === false)
{
$znak = $pos;
}
else if ($znak < $pos)
{
$znak = $pos;
}
}
}
if ($znak !== false)
{
if ($length-50 < $znak)
{
$length = $znak+1;
$str_new = substr($str, 0, $length);
}
else
{
$pos = strripos($str_new, ' ');
$length = $pos;
$str_new = substr($str, 0, $length).'...';
}
}
else
{
$pos = strripos($str_new, ' ');
$length = $pos;
$str_new = substr($str, 0, $length).'...';
}
}
else
{
$str_new = $str;
}
return $str_new;
}
Комментарии отсутствуют