多个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 相关文章推荐
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
php实现短信发送代码
Jul 05 PHP
php验证码实现代码(3种)
Sep 07 PHP
纯php生成随机密码
Oct 30 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
Jan 27 PHP
非常实用的php验证码类
May 15 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 PHP
PHP简单实现解析xml为数组的方法
May 02 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
用函数读出数据表内容放入二维数组
2006/10/09 PHP
php 无限级缓存的类的扩展
2009/03/16 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue-router传参用法详解
2019/01/19 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
python3生成随机数实例
2014/10/20 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python实现微信好友的数据分析
2019/12/16 Python
python初步实现word2vec操作
2020/06/09 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
趣味运动会简讯
2015/07/20 职场文书