StormBreaker
Registered
Сега си разглеждах един от моделите в един проект и се сетих колко много хора от тук ползват само substr за да режат текст или заглавие на определен брой символи.
Та реших да споделя тази функция, която пак реже текст, но само на празни места - не реже думи.
Ползва се така: CutToWord('teksta za rqzane', 13, '...');
Ще върне 'teksta za...', няма да среже последната дума. А ако текста е само от една дума, нещо като CutToWord('tekstazarqzane', 13); няма да има избор и ще я съкрати след 13тия символ.
Надявам се да не виждам заглавия като това по средата на тая тема
http://web-tourist.net/forum/viewtopic.php?t=761&postdays=0&postorder=asc&start=828
ПП. Работи за UTF-8 в този си вариант
Та реших да споделя тази функция, която пак реже текст, но само на празни места - не реже думи.
PHP:
/**
* Реже текст без да разсича думи
*
* @param string $str - Текста
* @param int $len - Брой символи
* @param string $dots - Какво да сложи след като съкрати текста
* @return string - Обработения текст
*/
public function CutToWord($str, $len, $dots = '')
{
if ( mb_strlen($str, 'UTF-8') < $len )
return $str;
for ( $i = $len; $i > 0; $i-- )
if ( mb_substr($str, $i, 1, 'UTF-8') == ' ' )
return mb_substr($str, 0, $i, 'UTF-8').$dots;
return mb_substr($str, 0, $len, 'UTF-8').$dots;
}
Ползва се така: CutToWord('teksta za rqzane', 13, '...');
Ще върне 'teksta za...', няма да среже последната дума. А ако текста е само от една дума, нещо като CutToWord('tekstazarqzane', 13); няма да има избор и ще я съкрати след 13тия символ.
Надявам се да не виждам заглавия като това по средата на тая тема
http://web-tourist.net/forum/viewtopic.php?t=761&postdays=0&postorder=asc&start=828
ПП. Работи за UTF-8 в този си вариант