多个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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
php验证码实现代码(3种)
Sep 07 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
php图片裁剪函数
Oct 31 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
php微信扫码支付 php公众号支付
Mar 24 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
用PHP+MySql编写聊天室
2006/10/09 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
React应用中使用Bootstrap的方法
2017/08/15 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
浅谈编码,解码,乱码的问题
2016/12/30 Python
python简单商城购物车实例代码
2018/03/15 Python
详解python数据结构和算法
2019/04/18 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python logging通过json文件配置的步骤
2020/04/27 Python
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
素质拓展感言
2014/01/29 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
新学期主题班会
2015/08/17 职场文书
婚礼答谢词范文
2015/09/29 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript