多个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 相关文章推荐
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
php实现计数器方法小结
Jan 05 PHP
php利用事务处理转账问题
Apr 22 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
微信支付开发交易通知实例
Jul 12 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
php语法检查的方法总结
Jan 21 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 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
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
Vue.js用法详解
2017/11/13 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
Python线性回归实战分析
2018/02/01 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
学生打架检讨书
2014/02/14 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
停水通知
2015/04/16 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书