多个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模板类代码
Sep 07 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php使用curl模拟登录后采集页面的例子
Nov 04 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
js 函数性能比较方法
2020/08/24 Javascript
Python 闭包的使用方法
2017/09/07 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
python django中8000端口被占用的解决
2019/12/17 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
公司同意接收函
2014/01/13 职场文书
服务生自我鉴定
2014/01/22 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
颐和园的导游词
2015/01/30 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python