用“......”体缩短字符串

时间:2010-01-23 03:56:22

标签: php string

就像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个字母的问题上不会起作用。任何指向写入方向的指针都会很棒,谢谢!

3 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:2)

substr()的第三个参数是长度,而不是结束。只需通过5

此外,substr($string, -5)

答案 2 :(得分:0)

更广义的解决方案

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, ' ... ')}}