Shorten string with a "..." body
Just like the the iPhone's app names that run to long, the name gets shortened. I really like this method of shorting a name or a string rather then appending a "..." clause to it. Sorry if I am being confusing, I'm having trouble explaining what I am trying to do. So I'll show an example!
This is what I have, to append "..." to a shortened string (In 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
?>
I would like to split up the name or string and keep the first say 10 characters, then insert "..." in the middle and lastly take the ending 5 letters of the string and display them. I was thinking of something along the lines of:
<?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);
?>
But realize th开发者_如何学JAVAat will not work in the regards that there are more then just 5 letters in the end. Any pointers into the write direction would be great, Thanks!
if (strlen($string) >= 20) {
echo substr($string, 0, 10). " ... " . substr($string, -5);
}
else {
echo $string;
}
The third argument of substr()
is a length, not an end. Just pass 5
instead.
Also, substr($string, -5)
.
More generalized solution
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;
}
usage
str_short(string, 20, 5, ' ... ')}}
精彩评论