Solution:1
/**
* PrintBrief : Returns a truncated version of the string (word-safe, multibyte-safe).
*
* @param string $str The input string.
* @param int $max_chars Maximum characters before truncation.
* @param string $encoding Multibyte encoding (default: UTF-8).
*
* @return string Truncated string with ellipsis if shortened.
*/
function PrintBrief($str, $max_chars = ALLOWED_NUM_OF_CHARS, $encoding = "UTF-8")
{
mb_regex_encoding($encoding);
mb_internal_encoding($encoding);
if (mb_strlen($str, $encoding) > $max_chars) {
// Cut string at character limit
$str = mb_substr($str, 0, $max_chars, $encoding);
// Split into words
$words = mb_split(' ', $str);
// Remove last incomplete word
array_pop($words);
// Rebuild sentence
$truncated = trim(implode(' ', $words));
// Clean trailing punctuation
$punctuation = [';', ','];
foreach ($punctuation as $p) {
$truncated = rtrim($truncated, $p);
}
return $truncated . ' ...';
}
return $str;
}
Example Usage
<?php
$str = "şğıöç İĞŞ ĞŞĞŞ Öİ ÇÇ Orta Amerika'nın en büyük ülkesi Nikaragua'nın başkenti Managua
dün sabaha karşı büyük bir patlamayla sarsıldı. Olayın, şehre düşen ufak bir meteroit sonucu
açılan krater çukurundan kaynaklandığı anlaşıldı. 1 milyon 200 bin kişinin yaşadığı ve bünyesinde
ulsulararası bir havalimanının da olduğu şehre meteorit düşmesi sonucu, sürpriz bir şekilde can
veya mal kaybı yaşanmadı ancak 12 metre çapında bir krater çukuru açıldı ve patlama neredeyse
şehrin tamamında hissedildi.";
// Example: limit string to ~300 characters
echo PrintBrief($str, 300);
?>