zoukankan      html  css  js  c++  java
  • [PHP] 中文字符串截取(UTF8与非UTF8)

    来源:http://zhidao.baidu.com/question/282309749.html

    function cutstr ($string, $length, $dot = '...', $charset = 'utf-8') {

    //功能:按长度截取字符串
    //$string, $length, $dot,$charset
    //字符串,要取长度,截断符,编码



    if (strlen($string) <= $length) {
    return $string;
    }

    $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);

    $strcut = '';
    if (strtolower($charset) == 'utf-8') {

    $n = $tn = $noc = 0;
    while ($n < strlen($string)) {

    $t = ord($string[$n]);
    if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
    $tn = 1;
    $n++;
    $noc++;
    } elseif (194 <= $t && $t <= 223) {
    $tn = 2;
    $n += 2;
    $noc += 2;
    } elseif (224 <= $t && $t <= 239) {
    $tn = 3;
    $n += 3;
    $noc += 2;
    } elseif (240 <= $t && $t <= 247) {
    $tn = 4;
    $n += 4;
    $noc += 2;
    } elseif (248 <= $t && $t <= 251) {
    $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 < $length; $i++) {
    $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++ $i] : $string[$i];
    }
    }
    $strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);

    return $strcut . $dot;
    }



    $str = "我们要截取的字符串";
    echo cutstr($str, 15, "...", 'utf-8');



  • 相关阅读:
    鼠标单击事件( onclick )
    什么是事件《js》
    作业
    javaben的设计规则
    cookie的相关方法
    cookie 基本用法
    include 指令与动作区别
    简单的购物车应用案例 相关代码4
    简单的购物车应用案例 相关代码3
    iOS UI 布局
  • 原文地址:https://www.cnblogs.com/hcbin/p/2284946.html
Copyright © 2011-2022 走看看