thinkphp3.2中文截取

Thinkphp/Common/functions.php添加代码:

/*
 * 字符串截取函数
 * */

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
    if(function_exists("mb_substr")){
        if($suffix)
            return mb_substr($str, $start, $length, $charset)."...";
        else
            return mb_substr($str, $start, $length, $charset);
    }
    elseif(function_exists(‘iconv_substr‘)) {
        if($suffix)
            return iconv_substr($str,$start,$length,$charset)."...";
        else
            return iconv_substr($str,$start,$length,$charset);
    }
    $re[‘utf-8‘]   = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef]
                  [x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
    $re[‘gb2312‘] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
    $re[‘gbk‘]    = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
    $re[‘big5‘]   = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
    preg_match_all($re[$charset], $str, $match);
    $slice = join("",array_slice($match[0], $start, $length));
    if($suffix) return $slice."…";
    return $slice;
}

视图模板代码:

{$article_contents|msubstr=0,160,‘utf-8‘,false}
时间: 2025-01-05 04:16:25

thinkphp3.2中文截取的相关文章

PHP中的中文截取乱码问题_gb2312_utf-8

一.字符串编码为gb2312,一个中文占俩字节 ? public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度         $strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度         for($i = $start; $i < $strlen;) {            

PHP实现中文截取无乱码

字符串的处理是编程中比较常见的,各种编程语言对字符串的处理也提供了大量函数,像php中mb_substr()函数可以实现对中文字符串的截取,如何使用自定义方法实现中文字符串截取无乱码这也是面试经常遇到的一道题目,不要觉得这是多此一举,php内置函数已经实现了,为什么要自己实现.其实这道题的真实目的是考查你对字符编码的理解.最起码你要知道从哪里开始截取,截取几个字节才是一个完整的字符,不然截取到的都是乱码.这就需要你对多字节字符编码有一定的了解.下面一起来实现吧. 1 <?php 2 /** 3

中文截取无乱码

/* *中文截取无乱码 */ function showsubstr_chinese($str, $start, $length = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length)); }

php中文截取无乱码

<?php header('Content-Type:text/html;charset=utf-8'); function cutstr($str,$len){     if($len<0){return null;}     $chars = 0; //字符数量     $offset = 0;     $res = '';         while($chars < $len){             $high = decbin(ord(substr($str,$offset

php解决中文截取乱码问题

针对截取字符串出现中文乱码问题,网上有很多介绍,也有很多函数,但笔者看着网上的函数,总感觉有点别扭, 所以自己动手写了一个防止截取字符串时出现中文乱码的函数. 实现的原理还是比较简单,主要是利用ASCII编码和中文编码的二进制范围不一致而把它们区分开来,然后,通过substr()截取字符串的函数实现的. 下面给出我写的代码,注意:我这里只针对utf-8编码,其他编码,看官可以自己手动改一下函数,以便支持其他的编码. <?php header('content-type:text/html;cha

php 中文截取函数

<?php/* * 中文字符截取 * @param   string    $string     被处理的字符串 * @param   int        $start       开始截取的位置 * @param   int        $length     截取的字符长度 * @param   string   $charset    字符编码 * @param   string   $dot          缩略符号 * * @return string */function c

中文截取字符串

echo mb_substr("我abc的名字是肖岩",0,7,'utf-8')."<br>";//我abc的名字 echo mb_strcut("我abc的名字是肖岩", 0,9,'utf-8');//我abc的 其中mb_substr中的第三个参数代表字符个数,mb_strcut函数中的第三个参数代表字符数,utf-8编码下汉字3个字符 还可以使用自定义函数截取,不过没有上述的好用 function GBsubstr($strin

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

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

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

一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: <?php $str='脚本之家:http://www.jb51.net'; echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf