diff($today)->y; } catch (Exception $e) { return '-'; } } if (!function_exists('mb_strimwidth')) { function mb_strimwidth($string, $start, $width, $trimmarker = '...', $encoding = null) { // Simple polyfill using substr // 1. Handle start offset $string = (string)$string; if ($start > 0) { $string = substr($string, $start); } // 2. Check length if (strlen($string) <= $width) { return $string; } // 3. Truncate $targetLen = $width - strlen($trimmarker); if ($targetLen < 0) $targetLen = 0; return substr($string, 0, $targetLen) . $trimmarker; } }