使用“...”截断字符串

6
就像iPhone应用程序名称太长一样,名称会被缩短。我真的很喜欢这种缩短名称或字符串的方法,而不是在其后附加“…”子句。如果我表达得有些混乱,很抱歉,我很难解释我想做什么。所以我来举个例子!
这就是我要附加“…”到缩短的字符串的方式(在PHP中)。
<?php
  $string = "This is a test script";

  if (strlen($string) >= 14)
    echo(substr($string), 0, 13). "..."); // This is a test...
  else
    echo($string); // This is a test script
?>

我想要将名称或字符串分割并保留前10个字符,然后在中间插入“...”,最后取字符串的末尾5个字母并显示它们。我想到的方法如下:

<?php
  $string = "This is a test script";

  if (strlen($string) >= 20)
    echo(substr($string, 0, 10). "..." .substr($string, 15, 20)); //This is a ...script
  else
    echo($string);
?>

但请注意,这种方法在某些情况下并不适用,因为结尾可能不止5个字母。如果您能指点正确的方向,那就太好了,谢谢!

为了澄清,是不想将一个词切断还是只想获取字符串的最后5个字符的能力? - munch
3个回答

18
if (strlen($string) >= 20) {
    echo substr($string, 0, 10). " ... " . substr($string, -5);
}
else {
    echo $string;
}

我简直不敢相信它是那么简单!谢谢! - David

2
substr() 的第三个参数是长度,而不是结尾位置。只需传入 5 即可。
另外,可以使用 substr($string, -5)

这总是让我困扰。希望在PHP中有另一个substr函数,它将采用两个位置作为参数,而不是位置和长度。 - Pavin Joseph

1
更通用的解决方案。
function str_short($string, $length, $lastLength = 0, $symbol = '...')
{
    if (strlen($string) > $length) {
        $result = substr($string, 0, $length - $lastLength - strlen($symbol)) . $symbol;
        return $result . ($lastLength ? substr($string, - $lastLength) : '');
    }

    return $string;
}

使用方法

str_short(string, 20, 5, ' ... ')}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接