/** * Returns the portion of string specified by the start and length parameters. If $trimmarker is supplied, it is appended to the return string. This function works fine with multi-byte characters if mb_* functions exist on the server. * * @param string $str * @param int $start * @param int $length * @param string $trimmarker * @return string */ function xoops_substr($str, $start, $length, $trimmarker = '...') { xoops_load('XoopsLocal'); return XoopsLocal::substr($str, $start, $length, $trimmarker); }
/** * Returns the portion of string specified by the start and length parameters. If $trimmarker is supplied, it is appended to the return string. This function works fine with multi-byte characters if mb_* functions exist on the server. * * @param string $str * @param int $start * @param int $length * @param string $trimmarker * * @return string */ function xoops_substr($str, $start, $length, $trimmarker = '...') { if (is_callable(array("XoopsLocal", "substr"))) { return XoopsLocal::substr($str, $start, $length); // Or // return xoops_local("substr", $str, $start, $length); } if (!XOOPS_USE_MULTIBYTES) { return strlen($str) - $start <= $length ? substr($str, $start, $length) : substr($str, $start, $length - strlen($trimmarker)) . $trimmarker; } if (function_exists('mb_internal_encoding') && @mb_internal_encoding(_CHARSET)) { $str2 = mb_strcut($str, $start, $length - strlen($trimmarker)); return $str2 . (mb_strlen($str) != mb_strlen($str2) ? $trimmarker : ''); } }