多个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 相关文章推荐
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
PHP的autoload自动加载机制使用说明
Dec 28 PHP
php URL验证正则表达式
Jul 19 PHP
php使用curl存储cookie的示例
Mar 31 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 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
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
如何使用php实现评委评分器
2015/07/31 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
vue实现购物车小案例
2019/09/27 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
17个Python小技巧分享
2015/01/23 Python
Python网络编程 Python套接字编程
2017/09/13 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python numpy存取文件的方式
2020/04/01 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
什么是网络协议
2016/04/07 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
关于安全演讲稿
2014/05/09 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
体育口号大全
2014/06/18 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript