Heim > Backend-Entwicklung > PHP-Tutorial > php怎样限制字符的显示长度?

php怎样限制字符的显示长度?

WBOY
Freigeben: 2016-06-06 20:35:39
Original
2517 Leute haben es durchsucht

php怎样限制字符的显示长度?

像上面这样(截取贴吧的),当字符长度超过固定的像素宽度时,截取像素宽度范围内的字符串,并在字符串后加省略号。mb_strlen函数只能获取字符数,而英文和中文一个字符所占的宽度不一样,不能根据字符数来确定,不知道该怎么实现?

回复内容:

php怎样限制字符的显示长度?

像上面这样(截取贴吧的),当字符长度超过固定的像素宽度时,截取像素宽度范围内的字符串,并在字符串后加省略号。mb_strlen函数只能获取字符数,而英文和中文一个字符所占的宽度不一样,不能根据字符数来确定,不知道该怎么实现?

那个可以通过 CSS 来控制的… http://jsfiddle.net/sc7uk5bw/

<code>//截取字符串
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){
    if(function_exists("mb_substr")){
        if($suffix){
            return mb_substr($str, $start, $length, $charset);
        }else{
            return mb_substr($str, $start, $length, $charset);
        }
    }elseif(function_exists('iconv_substr')) {
        if($suffix){
            return iconv_substr($str,$start,$length,$charset);
        }else{
            return 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;
    }else{
        return $slice;
    }

}
</code>
Nach dem Login kopieren

给一个我平时用来截取字符串的方法吧,支持中英文

<code>php</code><code>// 截取字符串
public static function mix_substr($str, $len = 12, $dot = true) {
    $i = 0;
    $l = 0;
    $c = 0;
    $a = array();
    while ($l = 224) {
            $c = 3;
            $t = substr($str, $i, $c);
            $l += 2;
        } elseif (ord($t) >= 192) {
            $c = 2;
            $t = substr($str, $i, $c);
            $l += 2;
        } else {
            $c = 1;
            $l++;
        }
        // $t = substr($str, $i, $c);
        $i += $c;
        if ($l > $len) break;
        $a[] = $t;
    }
    $re = implode('', $a);
    if (substr($str, $i, 1) !== false) {
        array_pop($a);
        ($c == 1) and array_pop($a);
        $re = implode('', $a);
        $dot and $re .= '...';
    }
    return $re;
}
</code>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage