如何在PHP中获得字符串的前n个字符?什么是最快的方法来修剪一个字符串到特定的字符数,并添加'…如果需要的话?


当前回答

如果需要控制字符串字符集,多字节扩展可以派上用场。

$charset = 'UTF-8';
$length = 10;
$string = 'Hai to yoo! I like yoo soo!';
if(mb_strlen($string, $charset) > $length) {
  $string = mb_substr($string, 0, $length - 3, $charset) . '...';
}

其他回答

使用子串

http://php.net/manual/en/function.substr.php

$foo = substr("abcde",0, 3) . "...";

$width = 10;

$a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);

或者使用wordwrap

$a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);

从4.0.6版开始,PHP就内置了这个功能。去看医生。

echo mb_strimwidth('Hello World', 0, 10, '...');

// outputs Hello W...

注意trimmarker(上面的省略号)包含在截断的长度中。

这就是我的工作

    function cutat($num, $tt){
        if (mb_strlen($tt)>$num){
            $tt=mb_substr($tt,0,$num-2).'...';
        }
        return $tt;
    }

其中$num表示字符数,$tt表示字符串,用于操作。

要在函数内创建(用于重复使用)并动态限制长度,请使用:

function string_length_cutoff($string, $limit, $subtext = '...')
{
    return (strlen($string) > $limit) ? substr($string, 0, ($limit-strlen(subtext))).$subtext : $string;
}

// example usage:
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26);

// or (for custom substitution text
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26, '..');