/*
* 函数说明:截取指定长度的字符串
* utf-8专用 汉字和大写字母长度算1,其它字符长度算0.5
*
* @param string $str 原字符串
* @param int $len 截取长度
* @param string $etc 省略字符...
* @return string 截取后的字符串
*/
if(!function_exists('ReStrLen'))
{
function ReStrLen($str, $len=10, $etc='...')
{
$restr = '';
$i = 0;
$n = 0.0;
//字符串的字节数
$strlen = strlen($str);
while(($n < $len) and ($i < $strlen))
{
$temp_str = substr($str, $i, 1);
//得到字符串中第$i位字符的ASCII码
$ascnum = ord($temp_str);
//如果ASCII位高与252
if($ascnum >= 252)
{
//根据UTF-8编码规范,将6个连续的字符计为单个字符
$restr = $restr.substr($str, $i, 6);
//实际Byte计为6
$i = $i + 6;
//字串长度计1
$n++;
}
else if($ascnum >= 248)
{
$restr = $restr.substr($str, $i, 5);
$i = $i + 5;
$n++;
}
else if($ascnum >= 240)
{
$restr = $restr.substr($str, $i, 4);
$i = $i + 4;
$n++;
}
else if($ascnum >= 224)
{
$restr = $restr.substr($str, $i, 3);
$i = $i + 3 ;
$n++;
}
else if ($ascnum >= 192)
{
$restr = $restr.substr($str, $i, 2);
$i = $i + 2;
$n++;
}
//如果是大写字母 I除外
else if($ascnum>=65 and $ascnum<=90 and $ascnum!=73)
{
$restr = $restr.substr($str, $i, 1);
//实际的Byte数仍计1个
$i = $i + 1;
//但考虑整体美观,大写字母计成一个高位字符
$n++;
}
//%,&,@,m,w 字符按1个字符宽
else if(!(array_search($ascnum, array(37, 38, 64, 109 ,119)) === FALSE))
{
$restr = $restr.substr($str, $i, 1);
//实际的Byte数仍计1个
$i = $i + 1;
//但考虑整体美观,这些字条计成一个高位字符
$n++;
}
//其他情况下,包括小写字母和半角标点符号
else
{
$restr = $restr.substr($str, $i, 1);
//实际的Byte数计1个
$i = $i + 1;
//其余的小写字母和半角标点等与半个高位字符宽
$n = $n + 0.5;
}
}
//超过长度时在尾处加上省略号
if($i < $strlen)
{
$restr = $restr.$etc;
}
return $restr;
}
}
php常用自建函数学习(1):标题或内容超过长度时在尾处加上省略号...
原创
©著作权归作者所有:来自51CTO博客作者漏刻有时的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【CAD建模号】学习笔记(三):图形绘制区1
本期学习笔记介绍【CAD建模号】中图形绘制区的二维工具、面建模、实体工具和文本工具。
角点 二维 图形绘制 CAD建模号 模宗 -
QLabel内容过长时,右侧显示省略号
QLabel内容过长时,右侧显示省略号
qt 字符串 ide 字符串函数 -
css文本超过宽度隐藏加上省略号css
-
安卓TextView内容过长显示省略号
背景经常会遇到文字过长时,需要在结尾显示省略号,在此总结一下所有的设置方法。解决方案(按照推荐级别从高到低排列):宽度采用wrap_content,设
android 控件 省略号 固定宽度 解决方案 -
android maxLength 超过长度不显示省略号
界面预览:由图中可以看出,此APP需要的组件有:两个TextView,一个用于显示手机号码的标题,另一个用于显示短信内容的标题。 &nbs
移动开发 java android 短信发送 Text -
axios uploadFile 直接提示失败
最近修复了一个layui的upload模块bug–非自动上传(即 auto: false )的场景中的上传按钮失效。首先贴出layui的upload模块官网地址:https://www.layui.com/demo/upload.html我所用的版本是layui2.3.0,但官网demo应该是最新版本layui 2.5.5的,但bug依然。Bug 描述:1、点击【选择文件】按钮正常选择第一个文件,
#lyaui上传bug #upload上传按钮 #layui上传文件按钮失效 #layui的upload选择文件 #layui之upload的坑

















