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) {
		$result .= $etc;
	}
	return $result;
}

如果需要截取utf-8格式的字符串,直接调用这个函数即可。

<?php
    $str=\"如果需要截取utf-8格式的字符串,直接调用这个函数即可。\";
    echo truncate_utf8_string($str,10);//输出结果:如果需要截取utf-8格...
?>

在线运行

收藏 打印