截取字符

截取中文字符串方法

function msubstr($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;

}

  

程序二:PHP截取UTF-8字符串,解决半字符问题

/******************************************************************
* PHP截取UTF-8字符串,解决半字符问题。
* 英文、数字(半角)为1字节(8位),中文(全角)为3字节
* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串
* @param $str 源字符串
* $len 左边的子串的长度
****************************************************************/

function utf_substr($str,$len)

{

for($i=0;$i<$len;$i++)

{

$temp_str=substr($str,0,1);

if(ord($temp_str) > 127)

{

$i++;

if($i<$len)

{

$new_str[]=substr($str,0,3);

$str=substr($str,3);

}

}

else

{

$new_str[]=substr($str,0,1);

$str=substr($str,1);

}

}

return join($new_str);

}

?>

  

<?

/**

 * 字符串截取,支持中文和其他编码

 *

 * @static

 * @access public

 * @param string $str 需要转换的字符串

 * @param string $start 开始位置

 * @param string $length 截取长度

 * @param string $charset 编码格式

 * @param string $suffix 截断显示字符

 * @return string

 */

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

    if(function_exists("mb_substr"))

         mb_substr($str, $start, $length, $charset);

    elseif(function_exists('iconv_substr')) {

         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;

}

  

你可能感兴趣的:(字符)