PHP-php截取字符问题

发布于 2016-12-07 12:35:29 字数 1027 浏览 1276 评论 3

我有一个网页,由于要多次输出数据库的内容,并且需要控制输出长度以,大概就是
<ul>
<li><?php echo leftStr($val['name'];?></li>
这里由于li需要控制,比如只能取5个字符,left就是截取函数,截取前5个字符,并且需要考虑字符集,于是从网上找了个公用的:
function leftStr($str, $start=0, $length, $charset="utf-8", $suffix=true) {
if(strlen($str) <= $length) return $str;
$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/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
//if($suffix) return $slice;
return $slice;
}
由于有几百次数据输出,感觉这个函数有限,例如使用了正则,正则匹配是需要消耗时间的。
请问大家有什么好的办法?
本来考虑控制css输出,固定li,但前端说不方便
我考虑过一下js的substr方法,但如何在html中输出php,还是多考虑下php的高效函数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮生未歇 2017-09-09 19:50:12

iconv_set_encoding("internal_encoding", "UTF-8");

echo iconv_substr('11测试1111',0,3);

泛泛之交 2017-06-27 22:18:27

你用mb_substr就可以呀,再说你也可以用缓存呀,若你的数据经常变你可以每5分钟更新一次缓存呀,没必要每次都从数据库读。

灵芸 2017-01-08 08:45:51

/**
* 截取字符串(支持中英文)
* @param string $string 需要截取的字符串
* @param int $length 取多少个字符
* @return string
*/
function usubstr($string, $length) {
if (mb_strlen($string, 'utf-8') <= $length) {
return $string;
} else {
return mb_substr($string, 0, $length, 'utf-8') . '...';
}
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文