php截取中文字符串 GB2312 utf-8

UTF-8截取中文字符串
   function Cn_Substr($string, $length) {
        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]/", $string, $info);
        for($i=0; $i<count($info[0]); $i++) {
 $wordscut .= $info[0][$i];
 $j = ord($info[0][$i]) > 127 ? $j + 2 : $j + 1;
 if ($j > $length - 3) {
 return $wordscut." ...";
 }
        }
        return join(‘‘, $info[0]);
   }
GB2312截取中文字符串
   function Cn_Substrs($strs,$lens){
      if (strlen($strs)<$lens) {
          $nstrs=$strs;
      }else{
          $mlens=$lens;
          for ($i=0;$i<=strlen($strs) && $mlens>0;$i++){
             $chars=substr($strs,$i,1);
             if(ord($chars)>0xa0 ) {
                $i++;
                $mlens -=2;;
             }else{
                $mlens--;
             }
          }
          $nstrs=substr($strs,0,$i)."...";
      }
      return $nstrs;
   }

php截取中文字符串 GB2312 utf-8

时间: 2024-10-11 03:32:52

php截取中文字符串 GB2312 utf-8的相关文章

php中计算中文字符串长度、截取中文字符串

在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. header

自定义一个函数截取中文字符串

/** * 截取中文字符串 * @param unknown $str 要截取的字符串 * @param unknown $encode 字符编码 * @param unknown $start 开始位置 * @param string $len 要截取的长度 * @return string */function getStr($str,$encode,$start,$len=null){ switch ($encode) { case 'utf8':$num = 3;break; case

php截取中文字符串,英文字符串,中英文字符串长度的方法

今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = ‘Hello,China!’;echo strlen($enStr); // 输出:12 而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8.utf-8能兼容更多的字符,所以受到很多站长的喜爱.gbk与u

thinkphp模板中截取中文字符串的方法分享

前段用thinkphp写了一个系统,感觉thinkphp学起来比较容易,开发起来了比较顺手,其中一个关键的因素就是它的模版引擎相当强大,使用方法跟smarty类似,在模版中还可以用php代码,有模版包含.继承的等很多好的功能…… 但是我发现thinkphp在模版函数中,没有中文字符串的截取函数,有个substr可以截取,但是不是基于中文的,当使用utf8编码的时候,由于3个字符代表一个中文,如果想截取的内容混杂中文/数字/英文字符串的时候就会出问题,最后一个字符很有可能混乱,这个问题很头大.于是

PHP截取中文字符串不出现?号的解决方法[原创]

PHP截取中文字符串不出现?号的解决方法[原创] 大 | 中 | 小 [不指定 2007-8-15 18:51 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.15 转载请注明出处:http://blog.zyan.cc] 当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字 view plainprint? <?php $text = "1欢迎访问sina新浪播客"; $value = substr($tex

PHP截取中文字符串方法总结

PHP截取中文字符串有时会出现乱码 使用一下三种方式解决乱码: <?php @header('Content-type: text/html; charset=UTF-8'); $arr = "sa撒的发dfa多少sfd看sdf得12上24飞452机[email protected]$#^辣^&%椒粉b"; /****************************************************************** * 程序一:PHP截取中文字符

php截取中文字符串无乱码的方法

利用php内置方法mb_substr截取中文不乱码,使用起来非常简单 <?php $str = '我喜欢laravel or yii2'; echo mb_substr($str, 0, 1, 'utf8'); //输出 我 exit; mb_substr方法比substr多一个参数,用来指定字符串编码.utf-8编码截取示例 $str = '我like laravel or yii2'; echo mb_substr($str, 0, 2, 'utf8'); //输出 我I 中英混合也完全没有

php截取中文字符串乱码问题

一般情况下说到截取字符串我们都会想到substr 然而substr对英文字符串有不错的效果,但是中文可能就会报出各种各样的问题: 所以,我们要采用mb库里面的substr,也就是mb_substr(); 不一样的是这个函数后边要规定好你最终的字符串格式 mb_substr(要截取的字符串,从第几个开始截取,截取几位,规定字符形式); 比如: 原文地址:https://www.cnblogs.com/findher/p/10610269.html

PHP截取中文字符串方法

方法一: /** * 截取utf8字符串 * @param string $str 字符串 * @param int $from 起始位 * @param int $len 结束们 * @return string */ public static function utf8Substr($str, $from, $len) { return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' . '