好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中截取字符串函数 - php函数

php中截取字符串函数

本文章是收集了几个常用的字符串截取函数,这是解决了php中对各种编码的字符截取会乱码的问题,有需要的同学可以参考一下.

1、截取GB2312中文字符串,代码如下:

<?php    //截取中文字符串     function  mysubstr( $str ,  $start ,  $len ) {    $tmpstr  =  "" ;    $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);    }    return   $tmpstr ;    }    ?> 

2. 截取utf8编码的多字节字符串,代码如下:

<?php    //截取utf8字符串     function  utf8Substr( $str ,  $from ,  $len )  //开源代码phpfensi测试数据   {    return  preg_replace( '#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,' . $from . '}' .    '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,' . $len . '}).*#s' ,    '$1' , $str );    }    ?> 

3. UTF-8、GB2312都支持的汉字截取函数

<?php   /*     Utf-8、gb2312都支持的汉字截取函数     cut_str(字符串, 截取长度, 开始长度, 编码);     编码默认为 utf-8     开始长度默认为 0     */     function  cut_str( $string ,  $sublen ,  $start  = 0,  $code  =  'UTF-8' )    {    if ( $code  ==  'UTF-8' )    {    $pa  =  "/[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]/" ;    preg_match_all( $pa ,  $string ,  $t_string );        if ( count ( $t_string [0]) -  $start  >  $sublen )  return  join( '' ,  array_slice ( $t_string [0],  $start ,  $sublen )). "..." ;    return  join( '' ,  array_slice ( $t_string [0],  $start ,  $sublen ));    }    else     {    $start  =  $start *2;    $sublen  =  $sublen *2;    $strlen  =  strlen ( $string );    $tmpstr  =  '' ;        for ( $i =0;  $i <  $strlen ;  $i ++)    {    if ( $i >= $start  &&  $i < ( $start + $sublen ))    {    if (ord( substr ( $string ,  $i , 1))>129)    {    $tmpstr .=  substr ( $string ,  $i , 2);    }    else     {    $tmpstr .=  substr ( $string ,  $i , 1);    }    }    if (ord( substr ( $string ,  $i , 1))>129)  $i ++;    }    if ( strlen ( $tmpstr )<  $strlen  )  $tmpstr .=  "..." ;    return   $tmpstr ;    }    }        $str  =  "abcd需要截取的字符串" ;    echo  cut_str( $str , 8, 0,  'gb2312' );    ?> 

4. BugFree 的字符截取函数,代码如下:

<?php    /**     * @package BugFree     * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $     *     *     * Return part of a string(Enhance the function substr())     *     * @author Chunsheng Wang <wwccss@263.net>     * @param string $String the string to cut.     * @param int $Length the length of returned string.     * @param booble $Append whether append "...": false|true     * @return string the cutted string.     */     function  sysSubStr( $String , $Length , $Append  = false)    {    if  ( strlen ( $String ) < =  $Length  )    {    return   $String ;    }    else     {    $I  = 0;    while  ( $I  <  $Length )    {    $StringTMP  =  substr ( $String , $I ,1);    if  ( ord( $StringTMP ) >=224 )    {    $StringTMP  =  substr ( $String , $I ,3);    $I  =  $I  + 3;    }    elseif ( ord( $StringTMP ) >=192 )    {    $StringTMP  =  substr ( $String , $I ,2);    $I  =  $I  + 2;    }    else     {    $I  =  $I  + 1;    }    $StringLast [] =  $StringTMP ;    }    $StringLast  = implode( "" , $StringLast );    if ( $Append )    {    $StringLast  .=  "..." ;    }    return   $StringLast ;    }    }        $String  =  "phpfensi测试数据-- 简单、精彩、通用" ;    $Length  =  "18" ;    $Append  = false;    echo  sysSubStr( $String , $Length , $Append );    ?>

查看更多关于php中截取字符串函数 - php函数的详细内容...

  阅读:47次