Home >php教程 >php手册 >php:根据中文裁减字符串函数方法

php:根据中文裁减字符串函数方法

WBOY
WBOYOriginal
2016-06-13 10:20:011305browse

define(CHARSET, 'UTF-8'); // 系统默认编码  

  

/** 

 * 根据中文裁减字符串 

 * @param $string - 字符串 

 * @param $length - 长度 

 * @param $doc - 缩略后缀 

 * @return 返回带省略号被裁减好的字符串 

 */  

function cutstr( $string, $length, $dot = '...' ) {  

    if ( strlen( $string )

        return $string;  

    }  

    $pre = chr( 1 );  

    $end = chr( 1 );  

    $string = str_replace( array( '&', '"', '' ), array( $pre . '&' . $end, $pre . '"' . $end, $pre . '' . $end ), $string );  

    $strcut = '';  

    if ( strtolower( CHARSET ) == 'utf-8' ) {  

        $n = $tn = $noc = 0;  

        while ( $n

            $t = ord( $string[$n] );  

            if ( $t == 9 || $t == 10 || (32

                $tn = 1;  

                $n++;  

                $noc++;  

            } elseif ( 194

                $tn = 2;  

                $n += 2;  

                $noc += 2;  

            } elseif ( 224

                $tn = 3;  

                $n += 3;  

                $noc += 2;  

            } elseif ( 240

                $tn = 4;  

                $n += 4;  

                $noc += 2;  

            } elseif ( 248

                $tn = 5;  

                $n += 5;  

                $noc += 2;  

            } elseif ( $t == 252 || $t == 253 ) {  

                $tn = 6;  

                $n += 6;  

                $noc += 2;  

            } else {  

                $n++;  

            }  

            if ( $noc >= $length ) {  

                break;  

            }  

        }  

        if ( $noc > $length ) {  

            $n -= $tn;  

        }  

        $strcut = substr( $string, 0, $n );  

    } else {  

        for ( $i = 0; $i

            $strcut .= ord( $string[$i] ) > 127 ? $string[$i] . $string[++$i] : $string[$i];  

        }  

    }  

    $strcut = str_replace( array( $pre . '&' . $end, $pre . '"' . $end, $pre . '' . $end ), array( '&', '"', '' ), $strcut );  

    $pos = strrpos( $strcut, chr( 1 ) );  

    if ( $pos !== false ) {  

        $strcut = substr( $strcut, 0, $pos );  

    }  

    return $strcut . $dot;  

}  

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn