就像 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 个时,这是行不通的。任何指向写入方向的指针都会很棒,谢谢!
if (strlen($string) >= 20) {
echo substr($string, 0, 10). " ... " . substr($string, -5);
}
else {
echo $string;
}
更通用的解决方案
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, ' ... ')}}
substr 将单词切成两半。此外,如果 word 包含 UTF8 字符,它也会出现错误。所以最好使用mb_substr:
$string = mb_substr('word word word word', 0, 10, 'utf8').'...';