Тъй като се чудих какво да правя сега и реших да пусна една публикация, в която да покажа една простичка, но елегантна функция за съкращаване на текст:
function trimtext($text, $max=100) {
if (mb_strlen($text, 'UTF-8')>$max) {
$text=mb_substr($text, 0, $max, 'UTF-8');
$text=mb_substr($text,0,mb_strrpos($text,' ','UTF-8'),'UTF-8').'…';
}
return $text;
}

И да обясня: mb_strlen – проверява дължината. Препоръчвам да използвате mb_strlen, тъй като само strlen няма да работи с кирилица и другите „special chars“. Ако дължината е по-голяма от $max (150) ще съкрати текста.
функцията mb_substr съкращава текста. Пак препоръчвам да се използва за „special chars“. Задължително му задайте енкодинг „UTF-8″, иначе може и да не сработи както очаквате. Първият показател ($text) е мястото, вторият показател е началото, а третият показател е краят. В нашия случай краят е променливата $max, която по-подразбиране е равна на 150.
функцията strrpos – намира мястото на зададения $needle. В нашия случай е просто интервал.
И така какво се случва. Да кажем, че в $text ще има 455 символа. Ние ще проверим дали символите са повече от 150. 455>150, следователно ще съкрати до 150-ия символ. След което ще проверим последното място на празното поленце. Да кажем, че ще ни върни, че това е 143 символ. След това отново ще съкратим като пак ще съкращаваме полученият резултат от първото съкращаване. След това пак избираме да е от началото до последният интервал, който се намира на 143 място. Така текстът ще бъде съкратен до 143 символ. В друг случай ще бъде съкратен до 145, в друг до 147 и т.н., но няма да надминава 150 и така дизайнът на вашата система няма да се развали по никакъв начин.

Това беше първият ми пост от серията „Уроци“. Надявам се, че съм ви бил полезен. Ако имате някакви идеи, напишете коментар :)

No related posts.