多个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中使用curl_init函数的说明
Nov 02 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP写的简单数字验证码实例
May 23 PHP
PHP自动识别当前使用移动终端
May 21 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
PHP网页缓存技术优点及代码实例
Jul 29 PHP
详解phpstorm2020最新破解方法
Sep 17 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 开发环境配置(测试开发环境)
2010/04/28 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP打印输出函数汇总
2016/08/28 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python语言快速上手学习方法
2018/12/14 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
高中自我评价分享
2013/12/05 职场文书
移风易俗倡议书
2014/04/15 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015新学期开学寄语
2015/02/26 职场文书
母亲节寄语大全
2015/02/27 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
MongoDB支持的索引类型
2022/04/11 MongoDB
移除Selenium中window.navigator.webdriver值
2022/06/10 Python