Aşağıdaki örnekler CodeIgniter 3'den.. Yıllar geçse de eskimez.
mb_substr mb_strlen vs.. türkçe karakterli cümlelerde sorun yaşamanızı engellemiş olur.
<?php
function word_limiter($str, $limit = 100, $end_char = '…') {
if (trim($str) === '') {
return $str;
}
preg_match('/^\s*+(?:\S++\s*+){1,' . (int) $limit . '}/', $str, $matches);
if (strlen($str) === strlen($matches[0])) {
$end_char = '';
}
return rtrim($matches[0]) . $end_char;
}
function character_limiter($str, $n = 500, $end_char = '…') {
if (mb_strlen($str) < $n) {
return $str;
}
$str = preg_replace('/ {2,}/', ' ', str_replace(array("\r", "\n", "\t", "\v", "\f"), ' ', $str));
if (mb_strlen($str) <= $n) {
return $str;
}
$out = '';
foreach (explode(' ', trim($str)) as $val) {
$out .= $val . ' ';
if (mb_strlen($out) >= $n) {
$out = trim($out);
return (mb_strlen($out) === mb_strlen($str)) ? $out : $out . $end_char;
}
}
}
$content = 'Bu, veritabanından çekilen uzun bir metin örneğidir ve 50 karakterden fazla uzunluğa sahiptir.';
echo word_limiter($content, 10);
echo '<br><br>';
echo character_limiter($content, 20);