多个PHP中文字符串截取函数


Posted in PHP onNovember 12, 2013
<?php
function sysSubStr($string,$length,$append = false) 
{ 
    if(strlen($string) <= $length ) 
    { 
        return $string; 
    } 
    else 
    { 
        $i = 0; 
        while ($i < $length) 
        { 
            $stringTMP = substr($string,$i,1); 
            if ( ord($stringTMP) >=224 ) 
            { 
                $stringTMP = substr($string,$i,3); 
                $i = $i + 3; 
            } 
            elseif( ord($stringTMP) >=192 ) 
            { 
                $stringTMP = substr($string,$i,2); 
                $i = $i + 2; 
            } 
            else 
            { 
                $i = $i + 1; 
            } 
            $stringLast[] = $stringTMP; 
        } 
        $stringLast = implode("",$stringLast); 
        if($append) 
        { 
            $stringLast .= "..."; 
        } 
        return $stringLast; 
    } 
} $string = "简明现代魔法 —— 专注于互联网主流的各种技术"; 
$length = "27"; 
$append = true; 
echo sysSubStr($string,$length,$append); 
// 输出 
// 简明现代魔法 —— 专...
?>

截取GB2312中文字符串:

<?php
//截取中文字符串
function mysubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
?>

截取utf8编码的多字节字符串:

<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                       '$1',$str);
}
?>

UTF-8、GB2312都支持的汉字截取函数:

<?php
/* 
Utf-8、gb2312都支持的汉字截取函数 
cut_str(字符串, 截取长度, 开始长度, 编码); 
编码默认为 utf-8 
开始长度默认为 0 
*/ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') 
{ 
    if($code == 'UTF-8') 
    { 
        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
        preg_match_all($pa, $string, $t_string); 
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; 
        return join('', array_slice($t_string[0], $start, $sublen)); 
    } 
    else 
    { 
        $start = $start*2; 
        $sublen = $sublen*2; 
        $strlen = strlen($string); 
        $tmpstr = ''; 
        for($i=0; $i< $strlen; $i++) 
        { 
            if($i>=$start && $i< ($start+$sublen)) 
            { 
                if(ord(substr($string, $i, 1))>129) 
                { 
                    $tmpstr.= substr($string, $i, 2); 
                } 
                else 
                { 
                    $tmpstr.= substr($string, $i, 1); 
                } 
            } 
            if(ord(substr($string, $i, 1))>129) $i++; 
        } 
        if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; 
        return $tmpstr; 
    } 
} 
$str = "abcd需要截取的字符串"; 
echo cut_str($str, 8, 0, 'gb2312'); 
?>
PHP 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
php session和cookie使用说明
Apr 07 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php简单操作mysql数据库的类
Apr 16 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
laravel学习教程之关联模型
Jul 30 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
PHP代码加密的方法总结
Mar 13 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 #PHP
CodeIgniter使用phpcms模板引擎
Nov 12 #PHP
php用正则表达式匹配URL的简单方法
Nov 12 #PHP
CodeIgniter基本配置详细介绍
Nov 12 #PHP
PHP URL路由类实例
Nov 12 #PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 #PHP
php inc文件使用的风险和注意事项
Nov 12 #PHP
You might like
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python 队列详解及实例代码
2016/10/18 Python
python实现数据图表
2017/07/29 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
创业计划书的写作技巧及要点
2014/01/31 职场文书
商铺租赁意向书
2014/04/01 职场文书
家长会欢迎标语
2014/06/24 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
请假条应该怎么写?
2019/06/24 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书