PHP中文字符串截取函数

转载 2006年05月17日 15:54:00
<?php
#============================================================================
# 参数说明:
# $fStr:需要截最的原始字符串;
# $fStart:从第几个汉字后开始载取,从头开始截取使用 0
# $fLen:截取几个汉字
# $fCode:原始字符串的编码方式,默认为 gb2312 或 big5,UTF-8 按 UTF-8 编码方式截取
#----------------------------------------------------------------------------
Function msubstr ($fStr, $fStart, $fLen, $fCode = "") {
    switch ($fCode) {
        case "UTF-8" :
            preg_match_all("/[/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]/", $fStr, $ar);
            if(func_num_args() >= 3) {
                if (count($ar[0])>$fLen) {
                    return join("",array_slice($ar[0],$fStart,$fLen))."...";
                }
                return join("",array_slice($ar[0],$fStart,$fLen));
            } else {
                return join("",array_slice($ar[0],$fStart));
            }
            break;
        default:
            $fStart = $fStart*2;
            $fLen   = $fLen*2;
            $strlen = strlen($fStr);
            for ( $i = 0; $i < $strlen; $i++ ) {
                if ( $i >= $fStart && $i < ( $fStart+$fLen ) ) {
                    if ( ord(substr($fStr, $i, 1)) > 129 ) $tmpstr .= substr($fStr, $i, 2);
                    else $tmpstr .= substr($fStr, $i, 1);
                }
                if ( ord(substr($fStr, $i, 1)) > 129 ) $i++;
            }
            if ( strlen($tmpstr) < $strlen ) $tmpstr .= "...";
            Return $tmpstr;
    }
}
?>

相关文章推荐

支持中文的PHP字符串截取函数

字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。 ...

PHP中文字符串截取函数

/****首先是CSDN论坛PHP斑竹xuzuning(唠叨)老大的,支持gb2312,gbk,big三种编码。 以下是代码:***/ $len = 19; $text = "怎么将新闻的很长的标题只...

php截取中文字符串函数及测试

字符串截取对于我们码农来说是家常便饭了,网页前台后台都容易用到,但是对一些中英文混合的字符串截取还是头疼容易出现乱码,因为汉字在gb2312编码中占有2个字符,所以容易出现截取一半的情况。我也一直想找...
  • ciaos
  • ciaos
  • 2012-04-25 14:49
  • 1241

php截取中文字符串无乱码的函数(主函数:ord()、substr())

根据UTF-8编码规范,将3个连续的字符计为单个字符 因此在做博客论坛iframe等页面的时候发现的这个知识点是utf-8的特性,不是PHP或者substr函数的特性 具体事例如下function...

PHP 中文字符串截取无乱码的方法以及php汉字截取函数_preg_split()

昨天,在写代码时我遇到了一个中文字符串截取的问题,原本是想直接用substr()来,但这个是在单字节符下用的,对于多字节编码的汉字或是其它语言字符中,这个函数可能就用不上了,而且会容易截出乱码来! ...

php中计算中文字符串长度、截取中文字符串的函数代码

在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启。当然,如果是用的自己的服务...

php中如何截取中文字符串?

php中如何截取中文字符串? 众所周知php原生函数substr是不支持截取中文字符串的。下面的代码提供了多种截取php中文字符串的方法。 1. 截取GB2312中文字符串...

PHP截取中文字符串方法

程序一:PHP截取中文字符串方法 由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr),今天找到一个比较好的截取中文字符串方法,在此与大家共享。 func...

php截取中文字符串

1. 截取GB2312中文字符串 <?php < ?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)