`

关于UTF-8和GBK的字符截取函数

    博客分类:
  • PHP
 
阅读更多

以前在截取 字符 串的时候,字母和数字,都不会出现太多的问题, 尤其是中文 ,一截就会出先:把某个汉字给截成两办了, 这会儿就会出现乱码!
因此想大家提供,两个函数 绝对好用:
GBK截取函数:

function GBsubstr($str, $start, $len) {
if (strlen ( $str ) > $len) {
   $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 );
               }
          }
       $tmpstr .= "";
        return $tmpstr;
} else {
return $str;
}
 }

 

UTF-8字符截取:

function subString_UTF8($str, $start, $lenth) {
                $len = strlen ( $str );
                $r = array ();
                $n = 0;
                $m = 0;
                for($i = 0; $i < $len; $i ++) {
                        $x = substr ( $str, $i, 1 );
                        $a = base_convert ( ord ( $x ), 10, 2 );
                        $a = substr ( '00000000' . $a, - 8 );
                        if ($n < $start) {
                                if (substr ( $a, 0, 1 ) == 0) {
                                } elseif (substr ( $a, 0, 3 ) == 110) {
                                        $i += 1;
                                } elseif (substr ( $a, 0, 4 ) == 1110) {
                                        $i += 2;
                                }
                                $n ++;
                        } else {
                                if (substr ( $a, 0, 1 ) == 0) {
                                        $r [] = substr ( $str, $i, 1 );
                                } elseif (substr ( $a, 0, 3 ) == 110) {
                                        $r [] = substr ( $str, $i, 2 );
                                        $i += 1;
                                } elseif (substr ( $a, 0, 4 ) == 1110) {
                                        $r [] = substr ( $str, $i, 3 );
                                        $i += 2;
                                } else {
                                        $r [] = '';
                                }
                                if (++ $m >= $lenth) {
                                        break;
                                }
                        }
                }
                
                return $r;
        
        } // End subString_UTF8
 
分享到:
评论

相关推荐

    易语言判断UTF-8字符

    4. **字符串处理技巧**:在易语言中,可以结合其他字符串处理函数,如`取字符串长度`、`截取字符串`等,配合`IsTextUTF8`来实现更复杂的文本操作,例如将非UTF-8字符串转换为UTF-8,或者从UTF-8字符串中提取特定部分...

    php 截取utf-8格式的字符串实例代码

    实际应用这个函数时,只需将需要截取的字符串和截取长度作为参数传递给`truncate_utf8_string`函数,即可完成UTF-8格式字符串的正确截取。例如: ```php $str = "这是一个UTF-8编码的字符串示例。"; echo truncate_...

    php自定义截取中文字符串-utf8版

    * 自定义UTF-8编码下的中文字符串截取函数 * @param string $str 需要截取的字符串 * @param int $start 开始位置 * @param int $length 截取长度 * @return string 截取后的字符串 * @author 2582308253@qq....

    php页面,mysql数据库转utf-8乱码,utf-8编码问题总结

    在处理中文字符截断时,由于UTF-8编码每个中文字符占用3个字节,直接使用字符串截取函数可能会导致截断位置位于字符中间,引发乱码。这时可以使用特定的函数,如上面提到的`get_brief_str()`函数,它会根据UTF-8编码...

    php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例

    在给定的文件中,有两个自定义的函数,`substr_for_gb2312` 和 `substr_for_utf8`,它们分别用于在GBK和UTF-8编码下正确地截取中文字符串。 首先,我们来看`substr_for_gb2312`函数。GBK是GB2312编码的扩展,它是一...

    中文字符串截取(支持各种编码格式)底层实现源码

    4. **编码回原格式**:如果需要,将截取后的Unicode字符串重新编码回原始格式,使用`str.encode()`函数,例如:`trimmed_unicode_str.encode('utf-8')`。 支持多种编码格式时,需要在上述步骤中添加额外的逻辑。...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要明白PHP内置的`strlen()`函数用于计算字符串的字节数,而非字符数。对于UTF-8编码的中文字符...

    php截取字符串

    - `$charset`:字符串的字符集,默认为'gbk',如果字符串是UTF-8编码,应设置为'utf-8'。 现在,让我们看看如何使用`strcut()`来截取UTF-8编码的字符串: ```php $text = "你好,世界!"; $substring = strcut($...

    php截取汉字类

    该PHP类提供了两种不同的编码方式(UTF-8和GBK)下的中文字符串截取功能。具体包括以下几个关键函数: 1. **smarty_modifier_truncate_utf8**: 用于UTF-8编码下的中文字符串截取。 2. **gbk_strlen**: 计算GBK编码...

    thinkphp中字符截取函数msubstr()用法分析

    在ThinkPHP中,字符截取是一个非常常见的操作,而msubstr()函数就是ThinkPHP中用于实现字符截取的内置函数。 msubstr()函数的主要功能是从指定的字符串中截取特定长度的字符。它的基本语法为:msubstr($str, $start...

    C/C++常用工具函数类 - 以前累积的一些工具函数源码

    开发过程中的一些实用工具函数源码:获得当前程序的路径、获得ini文件内容、设置ini文件内容、获得ini的节点名称、校验文件/路径是否存在、创建路径、获得/写入文件内容/遍历文件夹、字符串转换、文件复制、字符编码...

    UTF8 相关的PHP源代码

    例如,`mb_detect_encoding($str, ['UTF-8', 'GBK'], true)`会尝试检测并返回字符串的编码,如果检测到是UTF8,则返回`'UTF-8'`。 4. **UTF8字符串分割** 对于UTF8字符串的分割,`mb_split()`函数可以按照指定的...

    比较discuz和ecshop的截取字符串函数php版

    为了克服这些局限性,我们可以编写一个更通用的字符串截取函数,考虑使用`mb_strlen`和`mb_substr`来处理UTF-8编码的字符串。这样可以确保即使在处理包含特殊字符的字符串时也能正确截取。 ```php function ...

    php中支持多种编码的中文字符串截取函数!

    /* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-...

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

    另一个截取中文字符串的通用方法是`csubstr`函数,它可以处理不同的字符编码,如`utf-8`, `gb2312`, `gbk`, 和 `big5`。这个函数使用`mb_substr`函数(如果存在)来执行截取,或者使用正则表达式匹配和字符数组切片...

    go代码-截取指定字符转换

    在这个程序中,`gbkToUtf8`函数用于将GBK字符串转换为UTF-8,然后在`main`函数中,我们截取转换后的字符串并打印出来。 通过以上讲解,你应该对Go语言中的字符串切片和字符编码转换有了深入理解。在实际开发中,...

    php自动获取字符串编码函数mb_detect_encoding

    同样,UTF-8和GBK(即GB18030的简化版本)也可能产生类似的误判。 为了解决这个问题,我们可以调整`mb_detect_encoding`的参数,尤其是编码检查的顺序。通常,将最有可能的编码类型放在数组的前面,可以减少误判的...

Global site tag (gtag.js) - Google Analytics