PHP截取字符串完美版,不用担心中文截取乱码

原创 2015年07月10日 01:02:01

注意:自定义函数要放在项目应用目录/common/common.php中。 这里是关键。

thinkphp调用:{$vo.title|str_cut=###,10,'***'}

PHP调用:str_cut($aa,10);

/**

 * 字符截取
 * @param $string 需要截取的字符串
 * @param $length 长度
 * @param $dot
 */
function str_cut($sourcestr, $length, $dot = '...') {
    $returnstr = '';
    $i = 0;
    $n = 0;
    $str_length = strlen($sourcestr); //字符串的字节数 
    while (($n < $length) && ($i <= $str_length)) {
        $temp_str = substr($sourcestr, $i, 1);
        $ascnum = Ord($temp_str); //得到字符串中第$i位字符的ascii码 
        if ($ascnum >= 224) {//如果ASCII位高与224,
            $returnstr = $returnstr . substr($sourcestr, $i, 3); //根据UTF-8编码规范,将3个连续的字符计为单个字符         
            $i = $i + 3; //实际Byte计为3
            $n++; //字串长度计1
        } elseif ($ascnum >= 192) { //如果ASCII位高与192,
            $returnstr = $returnstr . substr($sourcestr, $i, 2); //根据UTF-8编码规范,将2个连续的字符计为单个字符 
            $i = $i + 2; //实际Byte计为2
            $n++; //字串长度计1
        } elseif ($ascnum >= 65 && $ascnum <= 90) { //如果是大写字母,
            $returnstr = $returnstr . substr($sourcestr, $i, 1);
            $i = $i + 1; //实际的Byte数仍计1个
            $n++; //但考虑整体美观,大写字母计成一个高位字符
        } else {//其他情况下,包括小写字母和半角标点符号,
            $returnstr = $returnstr . substr($sourcestr, $i, 1);
            $i = $i + 1;            //实际的Byte数计1个
            $n = $n + 0.5;        //小写字母和半角标点等与半个高位字符宽...
        }
    }
    if ($str_length > strlen($returnstr)) {
        $returnstr = $returnstr . $dot; //超过长度时在尾处加上省略号
    }
    return $returnstr;
}

php截取中文字符串无乱码的函数(主函数:ord()、substr())

根据UTF-8编码规范,将3个连续的字符计为单个字符 因此在做博客论坛iframe等页面的时候发现的这个知识点是utf-8的特性,不是PHP或者substr函数的特性 具体事例如下function...

用PHP来截取中文字符串而不出现乱码的实现方法

如何截取中文字符串而不出现乱码?  /* 功能:截取全角和半角混合的字符串以避免乱码 参数: $str_cut 需要截断的字符串 $length  允许字符串显示的最大长度 */...

php 字符串操作函数substr()截取中文子串乱码问题

一个中文字符,如果使用gbk编码,一个汉字占两个字节,如果是utf-8编码,那么占3个字节,而substr()截取子串时,是按照字节截取的,这就有可能会造成一个汉字只截取到了一半的情况,所以出现乱码 ...
  • slikang
  • slikang
  • 2017年10月26日 11:24
  • 64

PHP 中文字符串截取无乱码的方法以及php汉字截取函数_preg_split()

昨天,在写代码时我遇到了一个中文字符串截取的问题,原本是想直接用substr()来,但这个是在单字节符下用的,对于多字节编码的汉字或是其它语言字符中,这个函数可能就用不上了,而且会容易截出乱码来! ...

小马哥--高仿红米 note t208刷机 移植测试完美版中文触屏rec 界面图面观

高仿红米note  t208机型 移植测试的miui界面中文触屏版rec,  修改挂载外置卡。修改系统分区。此机有两个版本   移动版与联通版,测试都ok。刷入后按住音量上与开机键进入中文触屏版rec...

完美解决PHP中文乱码问题

完美解决PHP中文乱码问题 2009年12月01日 星期二 上午 10:58 来源:PHPChina 一.首先是PHP网页的编码 1.php文件本身的编码与网页的编...

完美解决PHP中文乱码问题

一.首先是PHP网页的编码 1.php文件本身的编码与网页的编码应匹配 a.如果欲使用gb2312编码,那么php要输出头:header(“Content-Type:text/html; char...

完美解决PHP中文乱码

这两天在赶小学期的作业,开发了一个小型的音乐网站,就两三千行,功能很简单,只能上传、下载歌曲,在线听歌,所谓在线听歌不过是在网页中放了一个对象,做这几个小功能遇到的最大问题就是中文乱码,经过一天上网查...

php JpGraph 使用完美解决中文乱码问题

最近由于项目需要,采用php的一款JpGraph插件来解决绘图问题。期间遇到不少问题,具体有: 1、如何使用composer包管理器安装加载。 2、如何解决绘图总中文乱码问题(标题和Legend)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP截取字符串完美版,不用担心中文截取乱码
举报原因:
原因补充:

(最多只允许输入30个字)