文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>php截取字符串的函数 支持utf8,gbk

php截取字符串的函数 支持utf8,gbk

时间:2010-10-13  来源:殷良胜

PHP code<?php
/**
* php截取字符串的函数 支持utf8,gbk
* -----------------------------------------------------
* $Source: http://code.ilaopo.net/php.function.sub_str $
* $Author: Bevin Chen $
* $Email: bevin#lifa8.cn $
* $Date: 2009-10-14 $
* -----------------------------------------------------
* @param    string       $str         被截取的字符串
* @param    int          $length      截取的长度
* @param    bool         $append      是否附加省略号
* @param    string       $charset     编码设置,utf8,gbk
*
* @return   string
*/
function sub_str($str, $length = 0, $append = true, $charset='utf8') {
    $str = trim($str);
    $strlength = strlen($str);
    $charset = strtolower($charset);

 

    if ($charset == 'utf8') {
        $l = 0;
        while ($i <= $strlength) {
            if (ord($str{$i}) < 0x80) {
                $l++; $i++;
             } else if (ord($str{$i}) < 0xe0) {
                $l++; $i += 2;
             } else if (ord($str{$i}) < 0xf0) {
                $l += 2; $i += 3;
             } else if (ord($str{$i}) < 0xf8) {
                $l += 1; $i += 4;
             } else if (ord($str{$i}) < 0xfc) {
                $l += 1; $i += 5;
             } else if (ord($str{$i}) < 0xfe) {
                $l += 1; $i += 6;
             }

            if ($l >= $length) {
                $newstr = substr($str, 0, $i);
                break;
             }
         }
        if($l < $length) {
            return $str;
         }
     } elseif($charset == 'gbk') {
        if ($length == 0 || $length >= $strlength) {
            return $str;
         }
        while ($i <= $strlength) {
            if (ord($str{$i}) > 0xa0) {
                $l += 2; $i += 2;
             } else {
                $l++; $i++;
             }

            if ($l >= $length) {
                $newstr = substr($str, 0, $i);
                break;
             }
         }
     }

    if ($append && $str != $newstr) {
        $newstr .= '..';
     }

    return $newstr;
}
?>

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载