php 截取字符串


var_dump(Helper::truncate_utf8_string('$str', 8));


/**

 * $string 传入字符串

 * $length 截取长度

 * $etc 超过部分替换内容

 */


public static function truncate_utf8_string($string, $length, $etc = '...')

    {

        $result = '';

        $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'UTF-8');

        $strlen = strlen($string);

        for ($i = 0; (($i < $strlen) && ($length > 0)); $i++) {

            if (!!$number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')) {

                if ($length < 1.0)

                    break;

                $result .= substr($string, $i, $number);

                $length -= 1.0;

                $i += $number - 1;

            } else {

                $result .= substr($string, $i, 1);

                $length -= 0.5;

            }

        }

        $result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');

        if ($i < $strlen && $etc !== false) {

            $result .= $etc;

        }

        return $result;

    }