PHP字符截取函数,兼容各类gbk,utf-8编码

例1

 代码如下 复制代码

function CsubStrPro($str, $start, $length, $charset = "utf-8", $suffix = false)
{
    if (function_exists ( "mb_substr" ))
        return mb_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;
}

例2

 代码如下 复制代码

 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;
}// End String

#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."

时间: 2024-07-29 20:20:31

PHP字符截取函数,兼容各类gbk,utf-8编码的相关文章

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

本文实例讲述了thinkphp中字符截取函数msubstr()用法.分享给大家供大家参考,具体如下: ThinkPHP有一个内置字符截取函数msubstr()如下: msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) $str:要截取的字符串 $start=0:开始位置,默认从0开始 $length:截取长度 $charset="utf-8":字符编码,默认UTF-8 $suffix=tr

php 字符截取函数

php 字符截取函数 function sub_str($title,$lengh){  if(strlen($title)>$lengh)  {   $pp=2;   $len=strlen($title);   if($len%2<>0)   {$pp=1;}   $title=substr($title,0,$lengh-$pp);   $title=$title.' -';  }  return $title; } //------------------------------

php支持gb2312,uft-8中英文字符截取函数

php教程支持gb2312,uft-8中英文字符截取函数 <?php //截取gb2312中文字符串 function mysubstr($str, $start, $len) {     $tmps教程tr = "";     $strlen = $start + $len;     for($i = 0; $i < $strlen; $i++) {         if(ord(substr($str, $i, 1)) > 0xa0) {            

asp字符截取函数

asp字符截取函数,取字符函数 <% '定义字符串判别函数 function strlen(str) dim p_len p_len=0 strlen=0 if trim(str)<>"" then p_len=len(trim(str)) for xx=1 to p_len if asc(mid(str,xx,1))<0 then strlen=int(strlen) + 2 else strlen=int(strlen) + 1 end if next en

oralce substr字符截取函数用法

在几乎所有的数据库教程中都会有字符截取这个函数,都大同小义了,下面我们来看看在Oralce中有个数据切割函数: substr的用法吧. substr('要切割的值',从第几个位置开始切割,切割几位); 如下例: view sourceprint?substr('hello word', 3, 2) would return 'll' substr('hello word', 5) would return 'o word' substr('hello word', -3, 3) would re

mysql SUBSTRING 字符截取函数

1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2.从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200) as abstract from my_content_t 3.截取字符串 substring(str, pos) subst

C#中文字符截取函数

函数|中文 ///str_value 字符///str_len 要截取的字符长度  public string leftx(string str_value,int str_len)  {   int p_num = 0;      int i;   string New_Str_value = "";    if (str_value=="")   {    New_Str_value = "";   }   else   {   int Le

php 字符截取函数 substr 与自定中英文截取函数

substr实例 $content ='i love you www.111cn.net';  $temp = substr($content,4); echo $temp; 结果: love you www.111cn.net' // 下面来看看从右边取函数.  $temp = substr($temp,0,-4); 结果为: i love www.111c 好了,下面我们再来看中文截函数吧. function MooCutstr($string, $length, $dot = ' ...'

javascript slice字符截取函数用法

slice用法 string.slice(num1, num2)     string.slice(num) slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分. 返回值 一个新的字符串.包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符. 实例 <html>     <script language="JavaScript">     <!--     v