Home >Backend Development >PHP Tutorial > [] ThinkPHP截取字符串

[] ThinkPHP截取字符串

WBOY
WBOYOriginal
2016-06-13 13:51:06904browse

[求助] ThinkPHP截取字符串
截取字符串 怎么不显示 省略号啊???
{$vo.title|msubstr=0,8,'UTF-8',true}


能截取 但是不显示省略号,怎么回事哦??谢谢哦。

------解决方案--------------------
从msubstr函数的定义上看,就不支持你需要的功能
/**
 +----------------------
 * 字符串截取,支持中文和其他编码
 +----------------------
 * @static
 * @access public
 +----------------------
 * @param string $str 需要转换的字符串
 * @param string $start 开始位置
 * @param string $length 截取长度
 * @param string $charset 编码格式
 * @param string $suffix 截断显示字符
 +----------------------
 * @return string
 +----------------------
 */
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset);
elseif(function_exists('iconv_substr')) {
return iconv_substr($str,$start,$length,$charset);
}
$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);
$slice = join("",array_slice($match[0], $start, $length));
if($suffix) return $slice."…";
return $slice;
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn