多个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 相关文章推荐
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
php获取后台Job管理的实现代码
Jun 10 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
thinkphp模板继承实例简述
Nov 26 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
设定php简写功能的方法
Nov 28 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产生随机字符串函数
2006/12/06 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
design vue 表格开启列排序的操作
2020/10/28 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
python daemon守护进程实现
2016/08/27 Python
python代码过长的换行方法
2018/07/19 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
个人银行贷款担保书
2014/04/01 职场文书
我的老师教学反思
2014/05/01 职场文书
工程项目合作意向书
2015/05/08 职场文书
2022年四月新番
2022/03/15 日漫
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript