`

关于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
 
分享到:
评论

相关推荐

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

    本文章向大家介绍一个php 截取utf-8格式字符串的函数。 举例说明: function truncate_utf8_string($string, $length, $etc = '...') { $result = ''; $string = html_entity_decode ( trim ( strip_tags ( $...

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

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

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

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

    C++如何过滤出字符串的中文(GBK、UTF-8)

    首先我查阅资料并写了个函数: 示例:返回输入字符串中汉字的个数: std::string StrWithOutSymbol(const std::string &source) { string sourceWithOutSymbol; int i = 0; while (source[i] != 0) { if ...

    PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数

    一、中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: 复制...

    PHP字符串的编码问题的详细介绍

    如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。    PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。  使用substr截取中文字符时会出现乱码,这是因为substr是按...

    PHP学习笔记之字符串编码的转换和判断

    // 将字符串由 GBK 编码转换为 UTF-8 编码 但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库: 复制代码 代码如下:mb_detect_encoding(‘软件开发...

    浅析PHP中的字符串编码转换(自动识别原编码)

    * 对数据进行编码转换 * @param array/string $data 数组 * @param string $output 转换后的编码 */function array_iconv($data,$output = ‘utf-8’) { $encode_arr = array(‘UTF-8′,’ASCII’,’GBK’,’...

    php读取html并截取字符串的简单代码

    $file=iconv(“gbk//IGNORE”,”utf-8″,$file); //echo $file; echo strpos($file,'&lt;title&gt;’); echo substr($file,strpos($file,'&lt;title&gt;’)+7,strpos($file,'&lt;/title&gt;’-strpos($file,'&lt;...

    易语言程序免安装版下载

    取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):  增加...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

Global site tag (gtag.js) - Google Analytics