多个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 相关文章推荐
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php 方便水印和缩略图的图形类
May 21 PHP
php 生成静态页面的办法与实现代码详细版
Feb 15 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
PHP邮箱验证示例教程
Jun 01 PHP
示例详解Laravel的注册重构
Aug 14 PHP
php并发加锁示例
Oct 17 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
php7性能提升的原因详解
Oct 13 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下使用以下代码连接并测试
2008/04/09 PHP
php学习笔记之 函数声明
2011/06/09 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
asp 的 分词实现代码
2007/05/24 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Python爬取京东的商品分类与链接
2016/08/26 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
大学生活动策划方案
2014/02/10 职场文书
房地产推广策划方案
2014/05/19 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书