/**
* 截取字符串
*
* @param string $str 字符串
* @param int $length 长度
* @param string $charset 编码
* @param bool $suffix 是否加省略号
* @return string
*/
function subs($str, $length, $charset="utf-8", $suffix=true) {
$str = htmlspecialchars_decode($str);
$start = 0;
if (function_exists("mb_substr")) {
if (mb_strlen($str, $charset) <= $length) {
return $str;
}
$slice = mb_substr($str, $start, $length, $charset);
} else {
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
if (count($match[0]) <= $length) {
return $str;
}
$slice = join("", array_slice($match[0], $start, $length));
}
if ($suffix) {
return $slice . "...";
}
return $slice;
}
温馨提示! 以下是付费内容 你可以随意修改付费可见的字段或内容,这里仅测试标题:php字符串截取加省略号 请直接修改模板中需要显示的付费字段
发表评论 取消回复